(React)关于道具改变的运行方法,包括初始道具

时间:2017-08-30 21:15:58

标签: javascript reactjs redux

我想在最初接收道具时以及随后的任何道具更改时运行一个功能。因此,我计划检查道具并在componentDidMountcomponentWillReceiveProps中运行此功能。但是,这似乎是多余的。我已经看到人们也在render()内检查道具并运行功能,但我的印象是不赞成的。

我的解决方案应该是什么?

2 个答案:

答案 0 :(得分:2)

在单个回调中无法替代componentDidMountcomponentWillReceiveProps。执行此操作的最佳方法是定义一个函数并从这两个回调中调用它。

  

我正计划检查道具并运行此功能

对您尝试做的事情的描述非常模糊。如果在render函数内完成,仅仅检查道具似乎不会有问题。但是如果这部分引起副作用(它可以)反过来触发组件重新渲染,那么它将成为一个问题。如果是这种情况,我会说"不赞成"轻描淡写地说。这个问题是你的渲染功能正在添加副作用,这反过来会触发更多的重新渲染,并且就此而言。它会立即扼杀你的应用程序的性能,甚至可能使整个事情陷入停顿。

答案 1 :(得分:0)

您的问题都标有React和Redux。您使用的mapStateToProps功能是否与connect一起使用?

如果是这样,可能的答案可能是在mapStateToProps函数中调度此操作(或运行此函数),因为这将在最初运行,然后每次更新redux状态。您必须确保操作/功能不会导致另一个状态更改,以便您最终处于循环中。

编辑:@DuncanThacker指出这可能不是一个好主意,因为mapStateToProps可能会经常触发,从而导致性能问题。好点。