Redux: 절대 상태를 변경하지 않음
17295 단어 reactdevopsjavascriptbeginners
const ADD_TO_DO = 'ADD_TO_DO';
// A list of strings representing tasks to do:
const todos = [
'Go to the store',
'Clean the house',
'Cook dinner',
'Learn to code',
];
const immutableReducer = (state = todos, action) => {
switch(action.type) {
case ADD_TO_DO:
// Don't mutate state here or the tests will fail
return
default:
return state;
}
};
const addToDo = (todo) => {
return {
type: ADD_TO_DO,
todo
}
}
const store = Redux.createStore(immutableReducer);
store
및 reducer
가 있습니다. 상태에 새로운 할 일을 추가하려면 감속기에서 ADD_TO_DO
케이스 작성을 완료해야 합니다. action.todo의 항목이 끝에 추가된 새 배열을 반환하는 방법을 찾아야 합니다. const ADD_TO_DO = 'ADD_TO_DO';
const todos = [
'Go to the store',
'Clean the house',
'Cook dinner',
'Learn to code',
];
const immutableReducer = (state = todos, action) => {
switch(action.type) {
case ADD_TO_DO:
let newList = [...todos]
newList.push(action.todo)
return newList;
default:
return state;
}
};
const addToDo = (todo) => {
return {
type: ADD_TO_DO,
todo
}
}
const store = Redux.createStore(immutableReducer);
store.dispatch(addToDo('PS5 Time'))****
console.log(store.getState()) //
[ 'Go to the store',
'Clean the house',
'Cook dinner',
'Learn to code',
'PS5 Time' ]
console.log(todos) //
[ 'Go to the store',
'Clean the house',
'Cook dinner',
'Learn to code' ]
배열에 스프레드 연산자 사용
....
입니다. [...myArray, 'new value']
라고 쓸 수 있습니다. 이것은 myArray의 값으로 구성된 새 배열과 마지막 값으로 새 값 문자열을 반환합니다. const immutableReducer = (state = ['Do not mutate state!'], action) => {
switch(action.type) {
case 'ADD_TO_DO':
// Don't mutate state here or the tests will fail
return
default:
return state;
}
};
const addToDo = (todo) => {
return {
type: 'ADD_TO_DO',
todo
}
}
const store = Redux.createStore(immutableReducer);
const immutableReducer = (state = ['Do not mutate state!'], action) => {
switch(action.type) {
case 'ADD_TO_DO':
let newArray = [...state, action.todo]
return newArray
default:
return state;
}
};
배열에서 항목 제거
slice()
및 concat()
가 있습니다. *암호:
const immutableReducer = (state = [0,1,2,3,4,5], action) => {
switch(action.type) {
case 'REMOVE_ITEM':
// Don't mutate state here or the tests will fail
return
default:
return state;
}
};
const removeItem = (index) => {
return {
type: 'REMOVE_ITEM',
index
}
}
const store = Redux.createStore(immutableReducer);
const immutableReducer = (state = [0,1,2,3,4,5], action) => {
switch(action.type) {
case 'REMOVE_ITEM':
let a = state.slice(0, action.index)
let b = state.slice(action.index + 1)
return a.concat(b)
default:
return state;
}
};
const removeItem = (index) => {
return {
type: 'REMOVE_ITEM',
index
}
}
const store = Redux.createStore(immutableReducer);
Larson, Q., 2019. 프론트엔드 개발 라이브러리. [온라인] Freecodecamp.org. 사용 가능 위치: https://www.freecodecamp.org/learn/front-end-development-libraries/redux
Reference
이 문제에 관하여(Redux: 절대 상태를 변경하지 않음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rthefounding/redux-never-mutate-state-3jj9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)