Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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 (React)道具更改时的运行方法,包括初始道具_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript (React)道具更改时的运行方法,包括初始道具

Javascript (React)道具更改时的运行方法,包括初始道具,javascript,reactjs,redux,Javascript,Reactjs,Redux,我想在最初收到道具和任何后续道具更改后运行一个函数。因此,我计划在componentDidMount和componentWillReceiveProps中检查道具并运行此函数。然而,这似乎是多余的。我见过有人在render()中检查道具和运行函数,但我觉得这是不受欢迎的 我的解决方案应该是什么?在单个回调中捕获componentDidMount和componentWillReceiveProps都是无可替代的。最好的方法是定义一个函数并从这两个回调调用它 我计划检查道具并运行此功能 是一个非常模

我想在最初收到道具和任何后续道具更改后运行一个函数。因此,我计划在
componentDidMount
componentWillReceiveProps
中检查道具并运行此函数。然而,这似乎是多余的。我见过有人在
render()
中检查道具和运行函数,但我觉得这是不受欢迎的


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

在单个回调中捕获
componentDidMount
componentWillReceiveProps都是无可替代的。最好的方法是定义一个函数并从这两个回调调用它

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


是一个非常模糊的描述你正在尝试做什么。如果在
render
函数中单独检查道具似乎没有问题。但如果这部分会产生副作用,进而触发组件重新渲染,则会成为一个问题。如果是这样的话,我会说“皱眉头”是轻描淡写的。问题是,渲染函数正在添加副作用,这些副作用反过来会触发更多的重新渲染并继续。它会立即扼杀你的应用程序的性能,甚至可能使整个过程陷入停顿

在单个回调中捕获
componentDidMount
componentWillReceiveProps
是不可替代的。最好的方法是定义一个函数并从这两个回调调用它

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


是一个非常模糊的描述你正在尝试做什么。如果在
render
函数中单独检查道具似乎没有问题。但如果这部分会产生副作用,进而触发组件重新渲染,则会成为一个问题。如果是这样的话,我会说“皱眉头”是轻描淡写的。问题是,渲染函数正在添加副作用,这些副作用反过来会触发更多的重新渲染并继续。它会立即扼杀你的应用程序的性能,甚至可能使整个过程陷入停顿

您的问题带有React和Redux标记。您是否正在使用与连接一起使用的
MapStateTops
功能

如果是这样,一个可能的答案可能是在
MapStateTrops
函数中分派此操作(或运行此函数),因为这将在最初和每次更新redux状态时运行。但是,您必须确保操作/函数不会导致另一个状态更改,因此最终会进入循环


Edit:@DuncanThacker指出这可能不是一个好主意,因为
mapstatetrops
可能会频繁触发,导致性能问题。很好。

您的问题同时带有React和Redux标记。您是否正在使用与连接一起使用的
MapStateTops
功能

如果是这样,一个可能的答案可能是在
MapStateTrops
函数中分派此操作(或运行此函数),因为这将在最初和每次更新redux状态时运行。但是,您必须确保操作/函数不会导致另一个状态更改,因此最终会进入循环


Edit:@DuncanThacker指出这可能不是一个好主意,因为
mapstatetrops
可能会频繁触发,导致性能问题。很好。

你试过你的第一种方法吗?将其添加到
componentDidMount
componentWillReceiveProps
可能看起来有点多余。但这两个LifeHook可能与您正在寻找的行为最为相似,因此请使用它们。应在每个渲染周期之前调用componentUpdate/componentWillUpdate,我认为在初始呈现之前不会调用
componentWIllUpdate
:@ChristopherMesser是的,这就是我目前正在做的。这取决于组件的结构和函数(例如:组件是否有状态?是否正在操作DOM?)如果您发布组件和函数的代码,这会很有帮助。您是否尝试了第一种方法?将其添加到
componentDidMount
componentWillReceiveProps
可能看起来有点多余。但这两个LifeHook可能与您正在寻找的行为最为相似,因此请使用它们。应在每个渲染周期之前调用componentUpdate/componentWillUpdate,我认为在初始呈现之前不会调用
componentWIllUpdate
:@ChristopherMesser是的,这就是我目前正在做的。这取决于组件的结构和函数(例如:组件是否有状态?是否正在操作DOM?)如果您发布组件和函数的代码,这将非常有用。我不建议这样做。在mapStateToProps()中执行操作是危险的,因为它可能会频繁触发并导致严重的性能问题。@DuncanThacker是的,这似乎是一个合理的担忧。将编辑我的答案。谢谢我不推荐这个。在mapStateToProps()中执行操作是危险的,因为它可能会频繁触发并导致严重的性能问题。@DuncanThacker是的,这似乎是一个合理的担忧。将编辑我的答案。谢谢