우선이 문제가 Chrome 콘솔, Redux 또는 JavaScript 객체와 관련이 있는지 잘 모릅니다. Redux reducer에서 아직 업데이트되지 않은 콘솔 출력 상태
function InputReducer(state = [{ }], action) {
console.log('input-reducer.js', 'state', state[0], JSON.stringify(state[0]));
switch (action.type) {
case 'STORE_INPUT_VALUE':
let newState = {};
newState = state[0];
_.set(newState, action.storePointer, action.value);
console.log('input-reducer.js', 'newState', newState, JSON.stringify(newState));
return [newState];
break;
default:
return state;
}
}
가 나는 상태가 대체, 대신 업데이트하지 말아야 알고
나는 나의 반작용 + 돌아 오는 응용 프로그램에서 다음과 같은 기능을 가지고있다. 지금은 신경 쓰지 마라, 이것은 과정의 중간에있다.
이 방법이 효과가 있지만 이해할 수없는 것은 로그를 볼 때 상태를 업데이트 할 때 첫 번째 로그가 newState와 정확히 같은 개체를 반환한다는 것입니다. 내가 알기에 로깅이 발생할 때마다 상태를 업데이트하는 함수가 실행되어서는 안되기 때문에 이것은 불가능합니다.
더 이상한 것은 내가 객체를 문자열로 지정할 때 올바른 예상 값을 반환한다는 것입니다.
내가 이런 식으로, 어떤 말도 상태를 반환하는 기능을 수정하는 경우
:function InputReducer(state = [{ a: 0 }], action) {
console.log('input-reducer.js', 'state', state[0], JSON.stringify(state[0]));
switch (action.type) {
case 'STORE_INPUT_VALUE':
let k = state[0].a + 1
let newState = {a: k};
console.log('input-reducer.js', 'newState', newState, JSON.stringify(newState));
return [newState];
break;
default:
return state;
}
}
... 로그가 제대로 개체를 보여 ... 또는 내가 그들을 것으로 예상 적어도 그들은 보인다.
그럼이 동작과 관련된 동작은 무엇이며 여기에 무엇을 놓치고 있습니까?
'action.storePointer'와'action.value'의 값은 무엇입니까? 실제로 값을 업데이트하지 않았거나 값의 경로가 유효하지 않을 수 있습니다. –
@MikeC 글쎄, 경로는 login.home.user이고, 값은 입력 내용과 동일합니다. 그러나 나는 이것이 문제라고 생각하지 않는다. 값은 올바르게 업데이트됩니다. IMO에서는 첫 번째 로깅에서 업데이트 된 값이 표시되지 않고 이전 값이 표시됩니다. –
콘솔에서 그들을 비교할 때, 객체 참조 나 JSON을보고 있습니까? 객체 참조는 동일하지만 JSON이 달라야합니다. –