gpt4 book ai didi

reactjs - componentWillReceiveProps 中的 setState 会在渲染之前运行吗?

转载 作者:行者123 更新时间:2023-12-03 13:25:20 24 4
gpt4 key购买 nike

React 文档提到对 setState 的调用会排队,并且不会立即发生。 React 是否保证在 componentWillReceiveProps 中排队的 setState 将在下一个组件渲染之前执行?这两种情况中的哪一种更有可能发生?

  1. Prop 更改 > componentWillReceiveProps 调用 > setState 排队 > setState 运行 > 渲染(包括新状态)

  2. Prop 更改 > componentWillReceiveProps 调用 > setState 入队 > 渲染 > setState 运行 > 重新渲染

或者,这两种情况的可能性相同吗?这意味着 React 不保证 setState 何时相对于组件生命周期方法运行?

以下是我的示例的 ES2015 代码摘录:

import React from 'react';

class Widget extends React.Component {

componentWillReceiveProps() {
this.setState({foo: 'bar'});
}

render() {
return <div>
<a onClick={(e) => {
e.preventDefault();
this.props.triggerExternalPropsChange();
}}>
Click me to trigger new props
</a>
</div>;
}
}

其中triggerExternalPropsChange将新 Prop 传递给Widget组件。

最佳答案

componentWillReceiveProps 存在的唯一原因是为组件提供setState 的机会。所以是的,您在其中同步设置的任何状态都将与新的 Prop 一起处理。在这种情况下不会有两个渲染,只有一个。

关于reactjs - componentWillReceiveProps 中的 setState 会在渲染之前运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44803121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com