2016-08-11 8 views
0

우리는 Redux.js를 React.js (React-Redux)와 함께 사용하고 있으며 감속기에는 다음 코드를 사용하고 있습니다. REDUX-조치는) 상용구를 줄이기 위해 : 우리는 React Immutability Helpers에서 update를 사용하지만 state =를 사용하여 상태로 결과를 할당하는Redux/React-Redux - 감속기에서 "state = XXX"사용

const update = require('react/lib/update'); 
const myReducer = handleActions 
({ 
    [myAction]: (state, action) => { 
     state = update(state, { 
      something: {$set: !state.someProperty} 
     }); 
     return someFunction(state); 
    } 
}) 

.

이것은 basic Redux guidlines과 관련이 있습니까? 즉 상태가 바뀌 었습니까? 그렇게 보이지만 코드가 완벽하고 신속하게 작동하는 것처럼 보입니다. 그리고 redux devtools는 상태 변경을 올바르게 보여줍니다 ...

답변

1

입니다. 실제로는 객체의 내용을 변경하지 않았으므로 state 변수가 가리키고 있습니다. 그 대신, state이라는 로컬 변수를 다른 객체를 가리 키도록 업데이트하는 것입니다.

JavaScript에서 변수 및 참조가 작동하는 방식을 이해하는 것이 중요합니다. 이는 자바 스크립트에서 수행되는 작업을 정리하는 데 도움이됩니다.

개인적으로, 나는 명확하게하기 위해 const newState = update(....)을하는 것이 좋습니다.

+1

감사합니다. 이제 알았습니다. 지역 변수'state'의 ** 내용 **을 (푸시 또는 속성을 설정하여) 변경하면 ** 실제 상태 객체가 ** 변경되기 때문에 혼란 스러웠습니다. 그러나 다른 것에 대한 참조를 변경함으로써 JS는 원래 객체를 변경하지 않고 로컬 변수의 참조를 변경합니다. 좋은 :-) –