Javascript 仅当'state'更改时调用'render'方法还是在'props'上也更改时调用'render'方法?
我正在探索Javascript 仅当'state'更改时调用'render'方法还是在'props'上也更改时调用'render'方法?,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我正在探索组件将如何在React中接收props方法。我发现,当组件的任何道具发生更改时,都会调用此方法,此方法可用于使用setState方法更新组件的状态,这将导致组件重新渲染 但是如果我不在组件willreceiveprops中调用设置状态,是否会导致渲染未被调用。换句话说,render是否仅在状态更改时调用,而不是在道具更改时调用?您的想法稍微偏离了轨道 每次更新时都会调用函数component willreceiveprops。它是一种功能状态,发生在您的更改实际发送到DOM之前 这样,
组件将如何在React中接收props
方法。我发现,当组件的任何道具
发生更改时,都会调用此方法,此方法可用于使用setState
方法更新组件的状态,这将导致组件重新渲染
但是如果我不在
组件willreceiveprops
中调用设置状态
,是否会导致渲染
未被调用。换句话说,render
是否仅在状态更改时调用,而不是在道具更改时调用?您的想法稍微偏离了轨道
每次更新时都会调用函数component willreceiveprops
。它是一种功能状态,发生在您的更改实际发送到DOM之前
这样,当你使用“代码>组件”时,你将在执行树的中间,定义你自己的自定义行为,这些行为应该在更新发生之前发生。
简单地说,组件将接收道具
将在以下情况下每次触发
如果您需要一个详细的答案来说明是什么导致了这样的改变,请搜索react的协调算法。您的想法稍微偏离了轨道 每次更新时都会调用函数
component willreceiveprops
。它是一种功能状态,发生在您的更改实际发送到DOM之前
这样,当你使用“代码>组件”时,你将在执行树的中间,定义你自己的自定义行为,这些行为应该在更新发生之前发生。
简单地说,组件将接收道具
将在以下情况下每次触发
如果您需要一个关于是什么提示了这样的更改的详细答案,则在
状态
或道具
更改时,始终会调用reactRender的协调算法componentWillReceiveProps
过去是在渲染发生之前使用这些道具的一种方式。但是,它目前不安全,建议改用。对于大多数用例,您甚至不需要将道具置于状态,因为您可以在实际的render
方法中渲染之前使用它们。您不应该依赖props
来重新渲染组件,但您应该使用state来重新渲染组件,而应该在state
或props
更改时始终调用rendercomponentWillReceiveProps
过去是在渲染发生之前使用这些道具的一种方式。但是,它目前不安全,建议改用。对于大多数用例,您甚至不需要将道具置于状态,因为您可以在使用实际的render
方法进行渲染之前使用道具。您不应该依赖props
来重新渲染组件,但您应该使用状态来重新渲染,感谢您对Aseem的响应。但我不知道当只有道具改变,但没有状态改变时,是否调用render
方法。或者,仅当我在componentWillReceiveProps
中调用setState
时才会调用它。如果调用父渲染,子渲染也将被调用,因为父渲染下的整个树将被重新渲染谢谢@Aseem。我正在浏览您提到的概念。“简单地说,每当状态和道具发生变化时,componentWillReceiveProps都会被调用。”这不是真的。声明中明确指出“不安全的组件WillReceiveProps()是在安装的组件接收新的道具之前调用的。调用此.setState()通常不会触发不安全的组件WillReceiveProps()”。这就像脱离上下文一样。不过我还是会修改答案谢谢你的回复。但我不知道当只有道具改变,但没有状态改变时,是否调用render
方法。或者,仅当我在componentWillReceiveProps
中调用setState
时才会调用它。如果调用父渲染,子渲染也将被调用,因为父渲染下的整个树将被重新渲染谢谢@Aseem。我正在浏览您提到的概念。“简单地说,每当状态和道具发生变化时,componentWillReceiveProps都会被调用。”这不是真的。声明中明确指出“不安全的组件WillReceiveProps()是在安装的组件接收新的道具之前调用的。调用此.setState()通常不会触发不安全的组件WillReceiveProps()”。这就像脱离上下文一样。但我还是要编辑答案