Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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
Reactjs 如何使用虚拟道具触发子级重新渲染_Reactjs_Rerender - Fatal编程技术网

Reactjs 如何使用虚拟道具触发子级重新渲染

Reactjs 如何使用虚拟道具触发子级重新渲染,reactjs,rerender,Reactjs,Rerender,我还没有找到一篇关于如何实现这一点的文章,所以我想知道在这种情况下,我更改了一个子对象在其父对象中使用的主对象,但这种情况的发生方式不会触发它的任何方法。建议用什么方式触发重新渲染 我的方法是只传递一个虚拟道具,该道具引发“onComponentWillReceiveProps”方法的触发,在该方法中,我将其传递的道具与道具进行比较,从而检测到发生的更改,该更改最终将触发该组件(子组件)的重新渲染 这不是坏的或任何东西,我只是觉得我有点把它拼凑在一起,想知道是否有一个干净的,推荐的“反应方式”

我还没有找到一篇关于如何实现这一点的文章,所以我想知道在这种情况下,我更改了一个子对象在其父对象中使用的主对象,但这种情况的发生方式不会触发它的任何方法。建议用什么方式触发重新渲染

我的方法是只传递一个虚拟道具,该道具引发“onComponentWillReceiveProps”方法的触发,在该方法中,我将其传递的道具与道具进行比较,从而检测到发生的更改,该更改最终将触发该组件(子组件)的重新渲染

这不是坏的或任何东西,我只是觉得我有点把它拼凑在一起,想知道是否有一个干净的,推荐的“反应方式”

谢谢


更新:我真的认为这会起作用,但我的破解根本不起作用。

你可以使用指定的生命周期方法,而不是将其破解到组件WillReceiveProps中。在那里,你可以检查你当前的道具,下一个要交付的道具并进行比较。

回答很好,但要确保我们同意:你说的仍然是在这种情况下传递一个“虚拟”参数一个没有相关信息的参数(在我的情况下是一个新的uuid)为了与shouldComponentUpdate通信,只为了重新渲染而不做其他事情?或者您是说我实际上可以在父对象的DOM标记中为子对象放置:
()}/>
。然后我就不需要在孩子身上做任何改变,或者干脆用那种方法,就这样?(我应该指定我是一个初学者)@tatsu如果UUID发生了变化,那么你可以将其与最新的道具进行比较并重新渲染。结果证明,这两种方法都不起作用。我需要一个完整的父+子代码spinet来理解这种方法感觉是错误的。
shouldComponentUpdate
的目的是允许在道具更改不需要重新渲染的情况下进行优化,您可以返回false。默认情况下,它将返回true(如果不存在),因此这可能就是您的尝试失败的原因。触发渲染的最可靠方法是设置状态,因此您应该确定在何处执行此操作。