вот мой render
метод FormEl
компонента.
return <div>
<button type="button" onClick={this.clicked}>click to add 1 input</button>
<Inputs count={this.state.childcount}/>
</div>
в методе clicked
я обновляю childcount
на 1, используя setState
это класс Inputs
class Inputs extends React.Component {
constructor(props) {
super(props);
console.log("Input constructor is running.");
this.state = {value: '', p: "p", count: props.count};
}
render() {
let c = [];
for (let i = 0; i < this.state.count; i++) {
c.push(
<div key={"id-" + (i * 10)}>
<input type="text" defaultValue={this.state.value}/>
<p> {this.state.p}</p>
</div>);
}
return <div>
{c}
</div>;
}
}
Но когда я обновляю childcount
в clicked
, я вижу, что FormEl
перерисовывается, count
в <Inputs..
соответственно увеличивается. Но он не вызывает constructor
из Inputs
, кроме как в первый раз (загрузка страницы).
setState()
обновит компонент, т.е. будет вызванrender()
. Это не означает, что весь компонент будет заново создан, т.е. вызовconstructor
- person Anand Undavia   schedule 06.09.2018componentWillReceiveProps()
- person Abin Thaha   schedule 06.09.2018componentWillReceiveProps()
скоро станет устаревшим. Таким образом, не рекомендуется использовать это. Вместо этого он должен использоватьcomponentDidUpdate()
- person vicke4   schedule 06.09.2018