Object.assign()
쉬운 솔루션이지만 (현재) 최고 답변 의 사용법은 상태 비 저장 구성 요소를 만드는 데는 좋지만 두 state
개체 를 병합하는 OP의 원하는 목표에 문제를 일으킬 것입니다 .
두 개의 인수를 사용 Object.assign()
하면 실제로 첫 번째 객체를 제자리에서 변경하여 향후 인스턴스화에 영향을줍니다.
전의:
상자에 대해 가능한 두 가지 스타일 구성을 고려하십시오.
var styles = {
box: {backgroundColor: 'yellow', height: '100px', width: '200px'},
boxA: {backgroundColor: 'blue'},
};
따라서 모든 상자에 기본 'box'스타일을 갖기를 원하지만 다른 색상으로 덮어 쓰려고합니다.
// this will be yellow
<div style={styles.box}></div>
// this will be blue
<div style={Object.assign(styles.box, styles.boxA)}></div>
// this SHOULD be yellow, but it's blue.
<div style={styles.box}></div>
일단 Object.assign()
실행 되면 'styles.box'객체가 변경됩니다.
해결책은에 빈 객체를 전달하는 것 Object.assign()
입니다. 그렇게함으로써, 전달한 객체로 새로운 객체를 생성하는 방법을 알려줍니다. 이렇게 :
// this will be yellow
<div style={styles.box}></div>
// this will be blue
<div style={Object.assign({}, styles.box, styles.boxA)}></div>
// a beautiful yellow
<div style={styles.box}></div>
제자리에서 변경되는 객체에 대한 이러한 개념은 React에 중요하며, 올바른 사용은 Object.assign()
Redux와 같은 라이브러리를 사용하는 데 실제로 도움이됩니다.