나는 초급 개발자이다. 나는 손주 주를 어떻게 다루어야 하는지를 이해하기 위해 고심하고있다. (또는 손자 주를 갖는 것이 좋은지를 보아라.)React JS : 손주들 상태를 설정하는 방법
내 질문
1.이 this.setState((prevState))
를 통해 손자를 변경할 수 있습니다 ...인가?
2. 상태로 손자를 갖는 것이 나쁜 생각입니까?
다음은 구성 요소의 생성자입니다.
constructor(props) {
super(props);
this.state = {
input: {
example: "",
},
invalid:{
example: false
},
};
this.handleChange = this.handleChange.bind(this);
this.submit = this.submit.bind(this);
}
나는 아이로 this.state.invalid
, 그리고 손자로 this.state.invalid.example
참조하십시오.
여기 JSX가 있습니다.
<div className="input">
<input type="text" value={this.state.input.example || ''} onChange={this.handleChange} />
{ this.state.invalid.example ? <span> This input is invalid </span> : null }
</div>
//Here are similar input fields...
<button onClick={this.submit} type="button">Submit</button>
onClick={this.submit}
이 발사 될 때, 나는 기능, 'this.submit'에 입력을 확인하고 싶습니다. 이 예에서
submit(){
for (var key in this.state.input) {
if(!this.state.input[key]){
this.setState((prevState, key) => ({
invalid[key]:true, //This causes an error, saying that "SyntaxError: Unexpected token, expected ,"
}));
}
}
는
this.state.invalid.example
(즉 변경)으로 설정하도록되어 있지만, 상기 코드는 작동하지 않는다.
아마도이 응용 프로그램을 분해하고 <div className="input">
을 단일 구성 요소로 만드는 것이 좋습니다. 그렇게하기 전에 손자를 이런 방식으로 설정할 수 있는지 여부를 명확히하고 싶습니다.
저는 ReactJS를 배우고있는 저의 주위에 아무도 몰라서, 어떤 조언도 감사 할 것입니다!
가능한 복제본 : http://stackoverflow.com/questions/18933985/this-setstate-isnt-merging-states-as-i-would-expect – forrert
정확히 내가 무엇을 찾고 있었는지 ... 그러나 이것은 매우 유익한. 그것을 공유해 주셔서 감사합니다! – Hiroki