所有的react 元素都是immutable
不可变的。当元素被创建之后,我们无法修改他的内容或属性。
根据我们现在所学的react的知识,我们要更新元素的内容,我们必须重新渲染这个元素,也就是重新创建这个元素。
看一个例子:
function tick() {
const element =
<div>
<h1>Hello, world</h1>
<h2>It is {new Date().toLocaleString()}.</h2>
</div>;
ReactDOM.render(
element,
document.getElementById('root')
);
}
setInterval(tick,1000);
这样确实是可以的,而且不要觉得重新渲染这个元素会造成一些资源的浪费,react可以自动比较元素内容的前后变化,然后只会更新内容发生变化的部分,所以不会有什么资源浪费。
但是我想用react渲染元素,然后用传统的js能不能改变元素的内容呢,我也试了一下,发现是可以的,毕竟人家说的是在react中,目前我们所学内容是无法改变元素内容的,所以总的来说是没毛病的,而且我们也不应该在react中又去单独的写js,因为我们的js应该都是和元素/组件关联的,不应当存在独立的js。
网友评论