当状态更改为redux时,React组件不会更新

问题描述 投票:1回答:3

REDUX

return{...state,importGridData:importGridData)

这里导入GridData分配给redux初始状态内的状态变量

组件渲染

const {importGridData} = this.props
this.setState({importGrdData,importGridData)

我使用props将数据输入到react组件中我希望将这些数据分配到我的datagrid组件中

<DataGrid data={this.state.importGrdData}

我不能在render方法中给出setState,那么如何更新我的datagrid数据呢?

这里有什么遗漏的东西吗?

提前致谢。

reactjs redux react-redux
3个回答
0
投票

看起来您想要从redux状态更新组件状态。

在这种情况下,如Bhojendra所述,您可以使用componentDidUpdate方法,如下所示。

componentDidUpdate(prevProps, prevState) {
  const { importGridData } = this.props;

  if(prevProps.importGridData !== importGridData) {
    // update the state
    this.setState({ importGrdData: importGridData })
  }
}

但是,如果您没有任何其他依赖项,我建议不要将redux状态复制到本地状态然后将数据绑定到DataGrid,而是建议直接使用redux状态绑定render方法中的网格。

render() {
   const { importGridData } = this.props;
   return <DataGrid data={importGridData} />;
}

0
投票

它应该是冒号:而不是逗号,

this.setState({importGrdData:importGridData})

啊,我看到拼写差异(Grd和Grid):

另外,你可以写:(因为你有相同的名字)

this.setState({importGrdData})


您可以更新componentDidUpdate挂钩中的状态,以便在获取道具后它将更新状态:

componentDidUpdate(prevProps, prevState) {
  if(this.state.importGrdData !== prevState.importGrdData) {
    // update the state
  }
}

要了解有关componentDidUpdate的更多信息,请查看docs

只有在极少数情况下,您才可以使用getDerivedStateFromProps


0
投票

我正在使用“componentWillReceiveProps”生命周期来接收下一个道具。

componentWillReceiveProps(nextProps){  
    this.setState({   
        importGrdData:    nextProps,  
    });
}

代码就是一个例子。我希望它对你有所帮助。谢谢

© www.soinside.com 2019 - 2024. All rights reserved.