首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用react路由器推送而不是链接导航会导致应用程序不更新并抛出错误,因为缺少操作

使用react路由器推送而不是链接导航会导致应用程序不更新并抛出错误,因为缺少操作
EN

Stack Overflow用户
提问于 2016-08-18 18:32:27
回答 1查看 430关注 0票数 0

我似乎在任何地方都找不到这个问题的直接答案。

环境是React、Redux和React-Router。

一个<Link>将点击到一个没有问题的组件并将其全部呈现出来。

使用this.context.router.push(url)会导致相同的组件出错,并且不会呈现任何内容,但会更新浏览器历史记录和url。

新组件有一个mapStateToProps函数和一个导出连接声明,如下所示:

export default connect(mapStateToProps, { fetchData, fetchOtherData })(ComponentName)

在使用router.push时,导出似乎失败,并且没有为connect的actions部分运行connect,这意味着fetchData从不返回数据,然后应用程序在mapStateToProps内部抛出错误,因为它期望从connect语句中连接的actions文件返回数据。

为什么router.push<Link>的工作方式不同,我应该如何导航到一个新页面,这是一个新的容器组件,需要数据才能呈现该页面?

EN

回答 1

Stack Overflow用户

发布于 2016-08-18 19:39:42

在容器组件中,不建议声明contextTypes,因为它可能会破坏现有的可用提供程序上下文。

所以我建议你这样写,

代码语言:javascript
运行
AI代码解释
复制
import { withRouter } from 'react-router'

const MyComponent =  connect(mapStateToProps, { fetchData, fetchOtherData })(ComponentName)

export default withRouter(MyComponent)

为了更轻松地访问路由器对象,添加了withRouter高阶组件作为新的主要访问方式。与其他React.Component一样,它可用于任何类型的任何React组件(React.createClass、ES2015 HoC类、无状态功能组件)。

有关更多详细信息,请参阅官方documentation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39025217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档