redux action的使用

这篇教程讲解了如何在React应用中监听数据变化并更新DOM。通过在input组件上设置onChange方法,派发action到reducer,并在reducer中根据action的type来改变state。同时,订阅store的变化并在状态改变时重新获取state并更新组件。
摘要由CSDN通过智能技术生成

继续上次的教程,还是先看图:

这次我们完成对reducer的修改,然后更新dom,文件目录结构如下

首先监听数据的改变,写好input组件的onchange方法

					<Input 
						value={this.state.inputValue} 
						placeholder='todo info' 
						style={{width: '300px', marginRight: '10px'}}
						onChange={this.handleInputChange}
					/>

然后再onchange方法中添加action 把这个动作派发给reducer, action是一个对象。首先需要定义action的type,这个就相当于名字,然后就是value值,把值传给reducer。

	handleInputChange(e) {
		const action = {
			type: 'change_input_value',
			value: e.target.value
		}
		store.dispatch(action);
	}

reduce接收到这个action进行处理,通过type判断改变谁的值。然后深拷贝jsson.stringify。然后将新的newstate返回。这里注意reduce不可以直接改变state的值。所以我们要先拷贝一份state,再将新的state return出去

	if (action.type === 'change_input_value') {
		const newState = JSON.parse(JSON.stringify(state));
		newState.inputValue = action.value;
		return newState;
	}

然后在todolist中,订阅store的改变。当reducer改变了 就会收到通知

	constructor(props) {
		super(props);
		store.subscribe(this.handleStoreChange);
	}

最后一步,收到store改变的通知,我们可以重新获取store中的state,然后出发setstate方法,重新触发render函数,刷新页面

	handleStoreChange() {
		this.setState(store.getState());
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值