在React 教程中,它说
React 元素是不可变的。一旦你创建了一个元素,你就不能改变它的子元素或属性。元素就像电影中的单个帧:它代表某个时间点的 UI。根据我们目前的知识,更新 UI 的唯一方法是创建一个新元素并将其传递给 ReactDOM.render()。
在下一个标题中,它说
React 只更新什么是必要的
React DOM 将元素及其子元素与前一个元素进行比较,并且仅应用使 DOM 达到所需状态所需的 DOM 更新。
他们举的例子——
function tick() {
const element = (
<div>
<h1>Hello, world!</h1>
<h2>It is {new Date().toLocaleTimeString()}.</h2>
</div>
);
ReactDOM.render(element, document.getElementById('root'));
}
setInterval(tick, 1000);
在这个例子中 React Only 更新时间 - <h2>It is {new Date().toLocaleTimeString()}.</h2
> 代码行。因为这只是必要的更改,但我无法理解 React 如何像他们提到的那样更改 Immutable 对象
React 元素是不可变的。一旦你创建了一个元素,你就不能改变它的子元素或属性。
因此,与其只更改“Just Time Part”(上面的代码示例),不如更改整个 React Element。我无法理解 React 如何在不可变对象(在上述情况下是元素)内部进行必要的更新,或者我遗漏了什么?