【问题标题】:React router stopped working after adding "createBrowserHistory" with saga使用 saga 添加“createBrowserHistory”后,React 路由器停止工作
【发布时间】:2020-12-11 09:11:44
【问题描述】:

我正在学习 React.js,但遇到了以下问题:

在使用 Saga 添加“createBrowserHistory”后,我的 react 应用停止工作。

基本上,当我点击“添加到购物车”按钮时,我想将用户重定向到购物车页面 (/cart)。

例子:

那是首页:

当我点击“添加到购物车”按钮时,它会导航到“/cart”路线。但是,它没有显示任何内容,并且控制台中没有错误。

我对我的代码进行了以下更改:

添加历史包:

创建的历史文件:

更改的 App.js 文件:

更改了 saga 文件。我希望在完成一些工作后导航到“/cart”路线...

问题就在这里!我只想解决我的 saga 文件中的问题。

我在这里创建了一个拉取请求,以重现错误。随意看看这个。

https://github.com/willianfalbo/online-shoes-app/pull/1

我愿意赏金为我创建 PR 的人。我也会在这里接受你的回答!

【问题讨论】:

  • 为什么首先需要createBrowserHistory 历史?当您的redux-saga 调用api 并成功后,将控件返回给您的React 组件以供以后处理不是更好吗?意思是,您可以轻松地更改 React component 中的路线,而不是 sagas,这将首先否定 createBrowserHistory 的使用..
  • 尝试改成yield call(history.push, '/cart');
  • @AlekseyL.,我试过这种方法,但没有用。
  • @PrãtéékThápá,你有什么例子吗?
  • 您可以使用MemoryHistory 进行测试,看看它在这种情况下是否仍然存在问题。不是解决方案,但可能会说明一些事情

标签: javascript reactjs react-redux redux-saga


【解决方案1】:

好像 react-router 5x 版本只兼容 history.4x。

将历史版本降级到 4.2.0 有效。

【讨论】:

  • @Willian 我已经发送了 PR。
  • 太棒了兄弟!感谢您为我创建 PR!做得好。我现在无法赏金你,因为我必须等待 24 小时才能这样做。顺便说一句,当我接受你的回答时,StackOverflow 你会自动赏金你。干杯
  • 我只是好奇。你是为生产而构建它还是只是一个练习应用程序?
  • 这只是为了练习,因为我上个月开始学习 React。你有什么建议吗?欢迎任何帮助 =)
  • 我觉得你做得过火了。我已经用 React 编写了一些生产应用程序。我认为您不需要 sagas 开始。 Redux thunk 可以。此外,您的应用也可以使用 Context API 而不是 redux。简而言之,您的应用可以使用Context API。不需要 redux、redux-sagas 和 immer。
猜你喜欢
  • 2015-12-25
  • 2017-11-25
  • 1970-01-01
  • 2021-04-08
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
相关资源
最近更新 更多