【问题标题】:React Not Rerendering After Redirect重定向后反应不重新渲染
【发布时间】:2023-04-06 05:43:02
【问题描述】:

我是 React Js 的初学者,但我遇到了一些问题。我正在开发一个测试应用程序,其中登录用户可以在按下删除按钮时删除他/她的帖子,在那里他/她被重定向到只显示带有确认消息的弹出模式的路线(我正在使用反应门户)。

当用户删除帖子时,他/她被重定向回包含所有帖子的页面,但删除的帖子在用户重新加载页面之前可见,那是它消失的时候,我似乎找不到一个解决方案。我认为 React 应该重新渲染,但似乎没有发生。这是一个代码 sn-p

反应

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

REDUX(动作)

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

我正在使用 lodash 创建一个新对象,当用户删除具有指定 ID 的帖子时该对象会更新

REDUX(减速机)

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

【问题讨论】:

  • 我假设streams.delete(/streams/${id}); 不会产生错误,因为刷新时流消失了。 DELETE_STREAM 的减速器可能出了问题。你能用处理该动作的reducer代码更新问题吗? (哦,是的,欢迎来到 Stack Overflow)

标签: reactjs react-redux


【解决方案1】:

我建议使用现代 JavaScript 从对象中删除键。

您使用omit 错误并删除了一个名为“id”的键,但我认为键 id,您应该使用return _.omit(state, action.payload);

但最好不要打扰 loadash 并使用 JS

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

如果您打算更频繁地使用它,可以将其放入库函数中。

【讨论】:

  • 我用 action.payload 替换了 id,它似乎工作正常。我期待着实现新语法
  • @KelvinMitaki 也许你可以尝试this utility 来修改状态而不改变它,而不是使用 lodash
猜你喜欢
  • 2020-07-05
  • 2021-09-06
  • 2022-01-04
  • 2019-12-13
  • 1970-01-01
  • 2023-03-25
  • 2021-10-03
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多