首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React -异步修改道具

React -异步修改道具
EN

Stack Overflow用户
提问于 2019-09-07 07:37:10
回答 1查看 32关注 0票数 0

通过使用Redux,我的组件在props中接收数据数组。我的目标是一旦组件拥有这些数据点,就异步修改它们,如下所示:

代码语言:javascript
复制
componentWillReceiveProps(newProps) {
   newProps.myData.forEach ( d => {
       axios.get(....).then (res => { d.property = res.data) });
   })
}

我还使用react-bootstrap-table-2来显示this.props.myData。但是,更新永远不会反映在表中。如果我同步地改变它,比如

componentWillReceiveProps(newProps) { newProps.myData.forEach( d => d.property = 1 ) }

然后,它将显示在表中。如何实现异步更新?

EN

回答 1

Stack Overflow用户

发布于 2019-09-07 12:07:29

如果你使用的是redux,你更新状态的方式应该是向你的reducer发送一个动作。您可以向组件提供dispatch,然后通过调用dispatch(updateTable(newData)调用您的操作,从而将操作分派给缩减程序

代码语言:javascript
复制
// tableActions.js
function updateTable(newData) {
  return {
     type: 'UPDATE_TABLE',
     newData: newData
  }
}

// tableReducer.js

function tableReducer(state = initialState, action) {
  switch (action.type) {
    case UPDATE_TABLE:
      return Object.assign({}, state, {
        tableData: action.newData
      })
    default:
      return state
  }
}

你需要像redux thunk这样的东西才能正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57829557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档