네스트된 객체에 대해 State를 설정하려면 어떻게 해야 합니까?
사용하고 있는 플러그인의 경우는, 다음과 같은 상태가 필요합니다.
getInitialState() {
return {
invalid: true,
access: {
access_code: '',
zipcode: '',
password: '',
confirm: '',
hospital_id: '',
},
}
},
나머지 액세스 권한을 설정하지 않고 hospital_id 상태를 설정하려면 어떻게 해야 합니까?
그러면 hospital_id를 제외한 모든 것이 삭제됩니다.
this.setState({access: {hospital_id: 1}})
몇 가지 옵션이 있습니다.
ECMA6에서는 오브젝트 스프레드 제안을 사용할 수 있습니다.
...
)는 갱신된 속성을 가진 오브젝트 복사본을 만듭니다.this.setState({ access: { ...this.state.access, hospital_id: 1, }, });
오브젝트에서 네이티브 할당 기능을 사용할 수 있습니다( ).
Object.assign()
)this.setState({ access: Object.assign({}, this.state.access, { hospital_id: 1, }), });
또는 최단 버전 및 원자 업데이트의 경우:
this.setState(({access}) => ({access: { ...access, hospital_id: 1, }});
또 하나의 옵션은 업데이트 애드온입니다.
var update = require('react-addons-update'); // per React docs // https://reactjs.org/docs/update.html // , you may want to change this to // import update from 'immutability-helper'; this.setState({ access: update(this.state.access, { hospital_id: {$set: 1}, }) });
첫 번째 것을 사용하는 것을 추천합니다.
let newAccess = Object.assign({}, this.state.access);
newAccess.hospital_id = 1;
this.setState({access: newAccess});
현재 선호하는 방법은 다음과 같습니다.
let newAccess = this.state.access;
newAccess.hospital_id = 1;
setState({access: newAccess});
현재 받아들여지고 있는 답변보다 약간 단순합니다.
EDIT (@SILENT로부터의 질문에 근거합니다)
이것은 실제로 잠재적으로 위험한 방법인 것 같습니다.여기서 더 읽어보세요 리액트: 불변성에 대해 (매우 간략하게) 이야기합니다.
더 나은 방법은 다음과 같습니다.
let newAccess = Object.assign({}, this.state.access, {hospital_id:1});
this.setState({access: newAccess});
또 다른 방법은
const newAccess = {...this.state.access};
newAccess.hospital_id = 1;
setState({access: newAccess});
확산 연산자를 사용하면 다음 복제본이 생성됩니다.this.state.access
.
저도 같은 문제(같은 맥락이 아님)가 있었습니다만, 아래의 코드를 제 자신의 작업에서 실행했는데, 완벽하게 동작했습니다.
this.setState({
access: {
...this.state.access,
hospital_id: 1,
},
});
이를 위한 최선의 방법은 ES6입니다.확산 오브젝트를 사용하여 다음과 같이 상태를 갱신할 수 있습니다(이 방법으로 "hospital_id"를 재할당합니다).
this.setState({ access : {...this.state.access , hospital_id : 1 } })
언급URL : https://stackoverflow.com/questions/34956479/how-do-i-setstate-for-nested-object
'programing' 카테고리의 다른 글
com.sun.jdi 입니다.호출메서드를 호출하는 동안 예외가 발생했습니다. (0) | 2023.03.29 |
---|---|
플럭스 앱에서 어디에 아약스 요청을 해야 합니까? (0) | 2023.03.29 |
D3.js: 이미지(데이터에 지정된 파일 이름 포함)를 축의 틱 값으로 사용 (0) | 2023.03.29 |
다른 인수로 같은 함수를 두 번 조롱합니다. (0) | 2023.03.29 |
Oracle 테이블의 마지막 행을 가져오는 방법 (0) | 2023.03.29 |