javascript - React - 异步修改 props
问题描述
通过使用 Redux,我的组件在 props 中接收到一个数据数组。我的目标是在组件拥有这些数据点后异步修改它们,如下所示:
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 ) }
然后它显示在表中。如何实现异步更新?
解决方案
如果你使用 redux,你更新 state 的方式应该是发送一个 action 到你的 reducer。您可以通过向您的组件提供一个动作到您的减速器dispatch
,然后通过调用来调用您的动作dispatch(updateTable(newData)
// 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 这样的东西才能工作
推荐阅读
- java - 当我使用 lombok 时,如何在 Gson 序列化/反序列化中向具有空字符串值的传入变量添加默认值?
- vue.js - 隐藏 vue 路由
- c - 使用 c 编写动态数组时,不同版本的 gcc 的输出不同
- regex - 正则表达式/XSLT:替换边界内的特定字符串
- react-native - 如何在 React-Native 的 TextInput 中为单个单词提供不同的样式?
- html - 在网页中设置 iframe 高度的问题
- python - 如何更改 - 使用 for 循环调用多个函数 - 变为 - 使用管道调用类?
- c# - SQL查询结果断言
- git - git rebase 并保持标签更新
- sql - 如何在大查询中使用时间部分 00:00:00 获取昨天的日期?