Я новичок в ReactJS, и я не могу показаться, чтобы выяснить, почему результат следующей SetState не как я ожидаю, что это (т.е. для увеличения значения каждую секунду на 1)SetState в ReactJS
import React from 'react';
import ReactDOM from 'react-dom';
class Layout extends React.Component {
constructor() {
super();
this.state = {
name: "Behnam",
i: 0
}
}
render() {
setInterval(() => {
this.setState({ name : "Behnam" + this.state.i });
this.setState({ i: this.state.i + 1 });
}, 1000);
return (
<div className="container">
{this.state.name}
</div>
);
}
}
ReactDOM.render(<Layout />, document.getElementById('app'));
Вместо этого строка вывода быстро увеличивается (я думаю, так же быстро, как реагировать, пытается сохранить ее «обновленный виртуальный DOM»). Поэтому мне было интересно, как правильно это сделать?
Вы сделали это неправильно. Знайте, что setState вызовет метод рендеринга, поэтому в вашем коде вы сделали какой-то цикл рендеринга> setState> render> setState .... Хорошим способом является setInterval внутри метода componentDidMount для реагирования на жизненный цикл компонента (https://facebook.github.io/react/docs/component-specs.html), поэтому ваш рендер будет только декларативным –