как добавить новое значение в json - PullRequest
0 голосов
/ 28 января 2020
pin = [
    {
        "id": 26,
        "comments": [
            {
                "id": 2,
                "username": "user",
                "description": "example",
                "pin": 26,
                "commenter": 1
            },
            {
                "id": 3,
                "username": "admin",
                "description": "example",
                "pin": 26,
                "commenter": 17
            }
        ],  
    }
]

пользователь отправит новый комментарий, и я бы хотел, чтобы он добавил новый комментарий в массив комментариев, я попытался поместить его таким образом, но другие значения оказались пустыми

   case ADD_COMMENT:
      return {
        ...state,
        pin: [...state.pin.commentstory, action.payload]
      };

как бы Вы добавляете новое значение в массив комментариев?

1 Ответ

1 голос
/ 28 января 2020

Это добавит action.payload к вашему массиву pin:

case ADD_COMMENT:
  return {
     ...state,
     pin: [...state.pin, action.payload]
  }

Чтобы добавить элемент в массив comments в массиве pin, вам нужен способ определить который элемент в массиве pin должен получить обновление.

case ADD_COMMENT:
  // suggested payload structure
  const pinId = action.payload.pinId;
  const newComment = action.payload.comment;

  const newPins = state.pin.map(p => { 
     if (p.id !== pinId) { return p };
     return {...p, comments: [...p.comments, newComment]};
  });
  return {
    ...state,
    pin: newPins
  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...