Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将道具从redux映射到组件状态_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 将道具从redux映射到组件状态

Javascript 将道具从redux映射到组件状态,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,在过去的两周里,我一直在使用React和Redux,但我并不完全确定这一切是如何工作的,在经过数小时的搜索,并没有真正找到我需要的信息后,我决定在安装组件后询问componentDidMountfire一次。但每次redux状态更新并且组件使用此状态字段时,redux都会向组件发送新的道具组件将接收道具将检查每一个新道具 componentWillReceiveProps(nextProps) { this.setState({ val1: nextProps

在过去的两周里,我一直在使用React和Redux,但我并不完全确定这一切是如何工作的,在经过数小时的搜索,并没有真正找到我需要的信息后,我决定在安装组件后询问
componentDidMount
fire一次。但每次redux状态更新并且组件使用此状态字段时,redux都会向组件发送新的道具<代码>组件将接收道具将检查每一个新道具

componentWillReceiveProps(nextProps) {
      this.setState({
            val1: nextProps.auth.val1,
            val2: nextProps.auth.val2,
            val3: nextProps.auth.val3
      });
}

此生命周期现在已被弃用,称为不安全组件WillReceiveProps。查看下面的链接以查看备选方案


componetdimount仅在安装组件时才会被调用。 因此,您必须使用组件willreceiveprops,它在道具更改时被调用

为了更好地理解,请查看以下内容:
我面临着像您这样的问题,我意识到您可以使用componentWillReceiveProps或getDerivedStateFromProps,但您需要触发本地状态更改以映射新的props。我尝试了一些情况,但我不知道它何时会自动更改,因此我编写此函数以在调度操作时重新渲染:

setCount() {
    let {count} = this.state;
    this.setState({count: count++});
}

这不是最好的解决方案,但这是最容易做到这一点的方法。

您可以尝试在
组件WillReceiveProps
生命周期中设置状态。顺便说一句,为什么你们要设置状态,而你们总是可以在reducer中设置一个动作来修改你们的道具?我只想直接操作道具,而不是把它分配给store。在每次更新redux store时,您必须注意导致创建样板代码的新组件状态,这只是一个旁注,您不应该在
render()
中设置状态。当您调用
setState()
时,它会触发一个
渲染
,从而循环。这就是异步流的问题所在。看看答案哇,非常感谢你们的帮助@TriyugiNarayanMani你是对的,使用它,效果很好!我唯一担心的是这种方法似乎不安全?谢谢你,安德鲁!这很好用,不过我有点担心。。。componentWillReceiveProps现在已弃用