2016-11-03 2 views
1

todotodos에 추가하는 것과 관련하여 고전적인 문제가 있습니다. 그것은 React/Redux에서합니다.React/Redux : 상태가 두 번 호출 되었습니까?

여기 reducer-todos.js입니다 :

export default function (state=[ 
    { 
     id: 0, 
     todo: "Study English" 
    }, 
    { 
     id: 1, 
     todo: "Run sprint" 
    }, 
    { 
     id: 2, 
     todo: "Call Bob" 
    }], action) { 
    switch(action.type) { 
     case "ADD_TODO": 
      return state.push({id: state.length, todo: action.todo}); 
      break; 
    } 
    return state; 
} 

여기에 내가 할 문제이다 :

enter image description here

어떻게 든 todos 객체는 4되고,하지 배열 [4]. 왜 이런 일이 일어나는 걸까요?

추가 정보가 필요한 경우 알려주십시오.

답변

1

어떻게 든 todos 개체는 Array [4]가 아닌 4가됩니다. 왜 이런 일이 일어나는 걸까요?

새로운 크기를 반환하는 push을 사용하고 있습니다. 대신 concat을 사용하면 새 항목을 변경하지 않고 새 배열을 반환합니다.

그래서이 :

return state.push({id: state.length, todo: action.todo}); 

될해야 :

return state.concat({id: state.length, todo: action.todo}); 
+0

그것은했다! 고마워, 고마워, 고마워! –

+0

@SamKirklandWA 환영합니다! 다른 사람이 문제가 해결되었음을 알 수 있도록 답변 옆에있는 체크 표시를 클릭하여 동의합니다. – Jack

+0

3 분이 지날 것입니다.) –

관련 문제