antd design pro dispatch无限循环
相关代码
table中有一个按钮
代码如下
<span
className={Style.opt}
style={{
color: record.display === 1 ? notClickColor : canClickColor,
cursor: record.display === 1 ? notClickCursor : canClickCursor,
}}
onClick={() => {this.editSource(index, record.display !== 1)}}
>
编辑
</span>
editSource = (index, state) => {
const { sourceList: { tableList }, dispatch } = this.props;
if (state) {
const newData = this.transformEditData(JSON.parse(JSON.stringify(tableList[index])));
console.log('step1');
dispatch({
type: 'sourceList/editSource',
payload: newData,
});
console.log('step2');
dispatch({
type: 'sourceList/editId',
payload: tableList[index].id,
});
console.log('step3');
this.setState({
showEdit: true,
});
console.log('step4');
}
}
effects如下
*editSource({ payload }, { put }) {
console.log('editSource');
yield put({
type: 'editSource',
payload,
});
},
*editId({ payload }, { put }) {
console.log('editId');
yield put({
type: 'editId',
payload,
});
}
reducers如下
···
editSource(state, { payload }) {
return {
...state,
editSource: payload,
};
},
editId(state, { payload }) {
return {
...state,
editId: payload,
};
}
···