我想在最初接收道具时以及随后的任何道具更改时运行一个功能。因此,我计划检查道具并在componentDidMount
和componentWillReceiveProps
中运行此功能。但是,这似乎是多余的。我已经看到人们也在render()
内检查道具并运行功能,但我的印象是不赞成的。
我的解决方案应该是什么?
答案 0 :(得分:2)
在单个回调中无法替代componentDidMount
和componentWillReceiveProps
。执行此操作的最佳方法是定义一个函数并从这两个回调中调用它。
我正计划检查道具并运行此功能
对您尝试做的事情的描述非常模糊。如果在render
函数内完成,仅仅检查道具似乎不会有问题。但是如果这部分引起副作用(它可以)反过来触发组件重新渲染,那么它将成为一个问题。如果是这种情况,我会说"不赞成"轻描淡写地说。这个问题是你的渲染功能正在添加副作用,这反过来会触发更多的重新渲染,并且就此而言。它会立即扼杀你的应用程序的性能,甚至可能使整个事情陷入停顿。
答案 1 :(得分:0)
您的问题都标有React和Redux。您使用的mapStateToProps
功能是否与connect
一起使用?
如果是这样,可能的答案可能是在mapStateToProps
函数中调度此操作(或运行此函数),因为这将在最初运行,然后每次更新redux状态。您必须确保操作/功能不会导致另一个状态更改,以便您最终处于循环中。
编辑:@DuncanThacker指出这可能不是一个好主意,因为mapStateToProps
可能会经常触发,从而导致性能问题。好点。