Реакция не перерисовывается после перенаправления - PullRequest
1 голос
/ 11 марта 2020

Я новичок в реагировании Js, и я столкнулся с некоторыми проблемами с ним. Я работаю над тестовым приложением, в котором вошедший в систему пользователь может удалить свой пост при нажатии кнопки удаления, когда он / она перенаправляется на маршрут, на котором отображается только модальное всплывающее окно с сообщением подтверждения (я использую порталы для этого).

Когда пользователь удаляет сообщение, он / она перенаправляется обратно на страницу, на которой были все сообщения, но удаленное сообщение отображается до тех пор, пока пользователь не перезагрузит страницу, и тогда она исчезнет. Кажется, я не могу найти решение этой проблемы. Я думал, что React было предложено изменить, но этого, похоже, не происходит. Вот фрагмент кода для этого

REACT

 <button
      onClick={() => this.props.deleteStream(id)}
      className="ui negative button"
    >
      Delete
    </button>
    <button onClick={() => history.push("/")} className="ui button">
      Cancel
    </button>

REDUX (ACTION)

export const deleteStream = id => {
  return async dispatch => {
    await streams.delete(`/streams/${id}`);
    history.push("/");
    return dispatch({ type: DELETE_STREAM, payload: id });
  };
};

Я использую loda sh для создания нового объекта, который обновляется, когда пользователь удаляет сообщение с указанным идентификатором

REDUX (РЕДУКТОР)

 case DELETE_STREAM:
  return _.omit(state, "id");

1 Ответ

0 голосов
/ 11 марта 2020

Я бы предложил использовать современный JavaScript для удаления ключа из объекта.

Вы используете пропустить неправильно и удаляете ключ с именем "id", но я думаю, что ключ это идентификатор, и вы должны использовать return _.omit(state, action.payload);

Но лучше не беспокоиться о loada sh и использовать JS

return Object.fromEntries(
  Object.entries(state).filter(([key])=>key!==action.payload)
)

Вы можете поместить это в библиотечная функция, если вы планируете использовать ее чаще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...