반응형
내 Redex 앱에서 상태를 올바르게 반환하려면 어떻게 해야 하는가?
우리는 할 일이 좀 있다.초기주(州)는 일종의...
initialState = [ {
id: 0,
title: "first",
items: [
{
title: "one from first",
id: 0,
cards: [
{
id: 0,
text: "111",
},
{
id: 1,
text: "222",
},
],
},
{
title: "two from first",
id: 1,
cards: [
{
id: 0,
text: "www",
},
{
id: 1,
text: "zzz",
},
],
},
], }, {
id: 1,
title: "second board",
items: [
{
title: "first from second",
id: 0,
cards: [
{
id: 0,
text: "asd",
},
{
id: 1,
text: "fasdf",
},
],
},
], }, ];
우리는 몇 가지 이유로 이 주를 정상화하지 않을 것이다.새 목록을 추가해야 해.여기 감속기:
switch(action) {
case CONSTANTS.ADD_LIST:
const newList = {
title: action.payload.title,
cards: [],
id: listID,
};
listID += 1;
return {
...state,
[action.payload.boardID]: {
...state[action.payload.boardID],
items: [...state[action.payload.boardID].items, newList],
},
};
}
예.나는 보드 1의 항목에 대한 newList를 추가하고 싶다(0부터 시작).
위와 같은 다른 예를 시험해 보았더니 소용이 없다.
그래서 왜 안 되는지 모르겠어.내가 문서 감량에 문제가 있는 것 같은데 이해가 안 돼.
고마워!
초기 상태가 객체가 아닌 배열인 것 같음:
initialState = [ {Board1},{Board2} ]
하지만 네 환원기는 물체를 돌려주는 것 같으니까 아마도 그건 잠재적인 문제일 거야.
======
대신 환원기에서 다음과 같은 변경을 시도할 수 있다.
- 판자를 얕게 복사하다.arr은 초창기 상태라고 한다.
- 각 보드에 반복해서 새 보드 오브젝트를 작성하다.
- 각 보드 오브젝트의 루프
items
받침대를 만들고, 그것의 얕은 사본을 만들다. - 각 항목을 반복하다
cards
그 사본을 떠받치다. - 최종적으로 당신이 원하는 이사회의 아이템을 교체한 다음
- 새로 만든 판자를 돌려주다Arr
// Pseudo code inside reducer
const newBoardsArr = state.map(board => {
return {
...board,
items: board.items.map(item => ({
...item,
cards: item.cards.map(card => ({
...card
}))
}))
}
});
// lets say we want to update first board's items, then:
newBoardsArr[action.payload.boardID].items = newList;
return newBoardsArr;
참조URL: https://stackoverflow.com/questions/64926652/how-can-i-return-the-state-correctly-in-my-redux-app
반응형
'programing' 카테고리의 다른 글
방법 대 Vue에서 계산된 방법 (0) | 2022.04.01 |
---|---|
Flask-SQ에서 ID별 레코드를 삭제하는 방법라헬미 (0) | 2022.04.01 |
파이톤 대본에 #!(쉐뱅)을 넣어야 하나, 어떤 형식을 취해야 하나? (0) | 2022.04.01 |
vue 및 vuex 상태를 초기화할 시기 (0) | 2022.04.01 |
Nuxt 라우터에서 동적으로 구성 요소 선택 (0) | 2022.04.01 |