Redux 결합 감속기
3581 단어 middlewarereactreduxjavascript
Redux의 문서에 따라 결합 감속기에 대한 세 가지 규칙이 있습니다.
여기 링크https://redux.js.org/api/combinereducers
콘텐츠는 아래와 같아야 합니다. 이것은 선택된 action.type에 따라 동작을 전환하고, 그렇지 않으면 기본 상태를 반환해야 합니다. 오류 오류: 초기화 중에 정의되지 않은 감소기 "todos"/"counter"가 표시됩니다.
export default function todos(state = [], action) {
switch (action.type) {
case 'ADD_TODO':
return state.concat([action.text])
default:
return state
}
}
다음으로 counter.js라는 또 다른 파일을 만듭니다. 내용은 아래와 같습니다. 여기서도 action.type을 기반으로 카운터를 늘리고 줄입니다. 여기서 초기 상태는 0입니다.:
export default function counter(state = 0, action) {
switch (action.type) {
case 'INCREMENT':
return state + 1
case 'DECREMENT':
return state - 1
default:
return state
}
}
이제 내용이 아래와 같은 reducer 폴더 안에 combineReducer.js라는 또 다른 파일을 만들 것입니다. 이 파일은 먼저 redux 라이브러리에서 combineReducers를 가져옵니다. combineReducers는 값이
{ todos: todos,
counter: counter
}
인 객체를 가져옵니다. ES6 구문에서 아래와 같이 간단하게 표현할 수 있습니다.import { combineReducers } from 'redux'
import todos from './todos'
import counter from './counter'
export default combineReducers({
todos,
counter
})
이제 가장 흥미로운 부분인 index.js 또는 App.js에서 저장소를 만들고 디스패치 작업과 console.logging을 수행합니다. 그 내용은 아래와 같습니다.
import { createStore } from 'redux'
import combineReducers from './reducers/index'
const store = createStore(combineReducers)
console.log(store.getState());
//1.First argument is only returned
store.dispatch({
type: 'ADD_TODO',
text: 'This is the 1st argument from todos'
}, { type: 'DECREMENT'})
console.log(store.getState());
store.dispatch({
type: 'INCREMENT'
})
console.log(store.getState());
store.dispatch({
type: 'DECREMENT'
})
console.log(store.getState());
store.dispatch({
type: 'DECREMENT'
})
console.log(store.getState());
코드의 첫 번째 줄에서는 redux 라이브러리에서 createStore를 가져왔습니다.
주석 섹션-1 아래 코드의 경우 store.dispatch에 두 개의 매개 변수를 제공하지만 다음과 같이 반환됩니다.
따라서 규칙은 첫 번째 인수(오직)가 확인될 때 주어진 상태를 반환해야 합니다.
두 번째 규칙은 정의되지 않은 상태를 반환해서는 안 된다는 것입니다. 이를 확인하기 위해 정의되지 않은 상태를 반환하는 빈 객체를 제공했습니다. 따라서 액션 유형이 있어야 한다고 말할 수 있습니다. 빈 문자열 유형의 객체가 제공되면 출력은 아래와 같이 정의되지 않습니다.
이제 세 번째 규칙은 주어진 상태가 정의되지 않았거나 단순히 빈 문자열 또는 null인 경우 출력은 아래와 같이 이전 상태에서 전달됩니다.
시간 내 주셔서 감사합니다.
행복한 배움 :)
Reference
이 문제에 관하여(Redux 결합 감속기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mannawar/redux-combinereducer-1mbc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)