antd design pro dispatch无限循环

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,

};
}
···

现在在执行editSource函数是,log中打印出来了 step1 ,也执行了第一个dispatch,但是执行不到后面,一直执行effects中的editSource

阅读 3.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题