programing

내 Redex 앱에서 상태를 올바르게 반환하려면 어떻게 해야 하는가?

prostudy 2022. 4. 1. 18:24
반응형

내 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

반응형