직접적으로 this.state를 변경하면 React의 상태 관리를 우회하게 된다.
-> 이러한 요소들은 React 원리를 어기는 것이 되고, 어플리케이션의 오작동을 유발할 수 있다.
this.state를 직접 조작한 내용은 this.setState 호출로 무효화가 된다.
나중에 성능 개성의 여지가 없다.
변경하지 말고 교체하라 !!
주의 !) 함수형 프로그래밍을 지원하는 자바스크립트에서는 위의 내용이 표준이 아니다.
-> 의도치 않게 변경할 가능성이 있다.
this.setState({
emails: [{}, {}, {}]
});
const emails = this.state.emails;
emails.push({});
//this.setState({
// emails: [...this.state.emails, {}]
//});
- Array.prototype.concat(),concat() 메서드는 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환합니다.
I, II는 Nested Object가 있는 경우 까다롭다.
자바스크립트 언어적 특징 때문에 할 수 없다.
React Addon에 복잡하고 중첩된 객체의 변경을 도와주는 immutality helper를 사용한다.
설치
$ npm i react-addons-update
import update from 'react-addons'update';
const newObject = update(objectInState, { [where]: { [what}: updateValue });