작성
·
20
1
function counter(state,action){
if(typeof state ==="undefined"){
return 0;
}
switch (action.type){
case "INCREMENT" return state +1;
case "DECREMENT" return state -1;
default : return state;
}
}
var store = Redux.createStore(counter);
var calueELem = document.getElementById("value")
function render(){
valueElem.innerHTML = store.getState().toString()
}
render();
store.subscribe(render);
여기 코드에서 궁금한 부분이 있어서 질문드립니다!
처음에 상태를 설정하지 않았는데 강사님은 왜 초기 상태 count 가 0이라고 하신건가요?
답변 2
0
안녕하세요, 소플입니다.
처음 createStore()
함수를 사용해서 Store를 생성하는 과정에서,
초기 state
를 생성하기 위해서 파라미터로 받은 reducer가 한 번 호출 됩니다.
그리고 처음 호출 될 때는 counter()
함수에 아무런 파라미터를 넣지 않은 상태로 호출하기 때문에,
state
가 undefined
이 되고 결국 0
이 리턴됩니다.
이러한 과정을 통해 초깃 값이 0
이 되는 것이라고 이해하시면 됩니다!
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. CCCssung님!
리덕스에서 상태(state)는 애플리케이션이 어떻게 동작할지를 결정하는 중요한 요소입니다. 질문하신 부분에서, 초기 상태의 설정은 리덕스의 중요한 기능 중 하나입니다.
리덕스의 createStore
함수는 첫 번째 인자로 리듀서 함수를 받는데, 이 함수는 상태와 액션을 인자로 받아 새로운 상태를 반환합니다. counter
함수의 첫 부분을 보시면 if(typeof state === "undefined") { return 0; }
라는 초기 상태를 설정하는 코드가 있습니다. 리듀서 함수가 처음 호출될 때는 의도적으로 상태가 undefined
로 전달됩니다. 이때, 초기 상태를 리턴함으로써 상태가 정의되지 않은 경우 초기값을 설정할 수 있게 됩니다. 따라서, 코드에서는 초기 상태를 0으로 설정하고 있습니다.
즉, 코드를 통해 초기 상태를 0으로 명시적으로 설정하고 있으며, 이는 리듀서의 작동 방식 덕분에 가능해진 것입니다.
관련 내용에 대해 더 궁금하시다면 이 질문의 기존 답변을 참고해 보세요: 안녕하세요, Counter 애플리케이션 실습 부분에서 질문있습니다!
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.