2017-05-12 6 views
0

동적 인 키와 값으로 데이터를 업데이트해야하는 상태에서 중첩 된 객체를 보았습니다. 나는 React 's immutability helper를 으로 설정했습니다. 반응 setState가 제대로 작동하지 않습니다.

내 샘플 코드 :

var update = require('react-addons-update'); 

var myState = update(this.state, { 
    data: {[dynamic_keys]: {$set: dynamic_values}} 
}); 

this.setState(myState); 

문제 setState를 두 번 하나의 상태를 업데이트하는 것이 아니라 클릭으로, 한 번에 상태를 업데이트하지 않습니다 ..이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 또는 거기에 setState 반응하는 다른 트릭을 무엇입니까 ??

+1

이 질문은 특히 명확하지 않습니다. 코드가 무엇을 원하는지를 설명하고 더 많은 코드를 제공 할 수 있다면 (예 :이 코드가 실행되는 기능이 명확하지 않은 경우) 더 유용 할 수 있습니다. –

+0

@DaveDraper 내 코드가 입력 상자 onChanged에서 실행됩니다. 내 주요 관심사 또는 불만족이 이유입니다. –

+1

setState에 대한 호출이 실제로 실행되고 있는지 확인하기 위해 코드에 중단 점을 설정 했습니까? 첫 번째 클릭에? 입력 요소의 onChanged 이벤트 핸들러 인 경우이 이벤트가 실제로 트리거되고 있는지 확인하십시오 (입력 요소를 할당 한 유형은 무엇입니까?) –

답변

0

우선 "setState()"가 동 기적으로 작동하지 않습니다. 비동기 함수이기 때문에 실행 후 상태를 설정하는 데 약간의 시간이 걸립니다. 가장 좋은 해결책은 setState의 두 번째 매개 변수를 사용하는 것입니다. 다음은 샘플 예제입니다.

stateFunction(data){ 
    this.setState({ 
     data 
     }, 
     () => {console.log(this.state.data) 
    }) 
}