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之前

    这样,当你使用“代码>组件”时,你将在执行树的中间,定义你自己的自定义行为,这些行为应该在更新发生之前发生。

    简单地说,
    组件将接收道具
    将在以下情况下每次触发

  • 当父零部件导致子零部件的道具更改时,用于子零部件
  • 组件本身接收新道具
  • 编辑

    回答您的评论时,如果任何更改导致组件重新渲染,则在其下定义的所有组件(即其所有子组件)也将重新渲染


    如果您需要一个关于是什么提示了这样的更改的详细答案,则在
    状态
    道具
    更改时,始终会调用react

    Render的协调算法
    componentWillReceiveProps
    过去是在渲染发生之前使用这些道具的一种方式。但是,它目前不安全,建议改用。对于大多数用例,您甚至不需要将道具置于状态,因为您可以在实际的
    render
    方法中渲染之前使用它们。您不应该依赖
    props
    来重新渲染组件,但您应该使用state来重新渲染组件,而应该在
    state
    props
    更改时始终调用render
    componentWillReceiveProps
    过去是在渲染发生之前使用这些道具的一种方式。但是,它目前不安全,建议改用。对于大多数用例,您甚至不需要将道具置于状态,因为您可以在使用实际的
    render
    方法进行渲染之前使用道具。您不应该依赖
    props
    来重新渲染组件,但您应该使用状态来重新渲染,感谢您对Aseem的响应。但我不知道当只有道具改变,但没有状态改变时,是否调用
    render
    方法。或者,仅当我在
    componentWillReceiveProps
    中调用
    setState
    时才会调用它。如果调用父渲染,子渲染也将被调用,因为父渲染下的整个树将被重新渲染谢谢@Aseem。我正在浏览您提到的概念。“简单地说,每当状态和道具发生变化时,componentWillReceiveProps都会被调用。”这不是真的。声明中明确指出“不安全的组件WillReceiveProps()是在安装的组件接收新的道具之前调用的。调用此.setState()通常不会触发不安全的组件WillReceiveProps()”。这就像脱离上下文一样。不过我还是会修改答案谢谢你的回复。但我不知道当只有道具改变,但没有状态改变时,是否调用
    render
    方法。或者,仅当我在
    componentWillReceiveProps
    中调用
    setState
    时才会调用它。如果调用父渲染,子渲染也将被调用,因为父渲染下的整个树将被重新渲染谢谢@Aseem。我正在浏览您提到的概念。“简单地说,每当状态和道具发生变化时,componentWillReceiveProps都会被调用。”这不是真的。声明中明确指出“不安全的组件WillReceiveProps()是在安装的组件接收新的道具之前调用的。调用此.setState()通常不会触发不安全的组件WillReceiveProps()”。这就像脱离上下文一样。但我还是要编辑答案