当前位置: 首页 > 面试题库 >

如何使用react-router和ES6类模拟window.location

东方俊材
2023-03-14
问题内容

我使用的是react-router,因此我将<Link />组件用于整个应用程序中的链接,在某些情况下,我需要根据用户输入动态生成链接,因此需要类似的内容 window.location,但无需刷新页面。

我发现了这个小笔记-(https://github.com/rackt/react-
router/issues/835
)-我尝试使用,this.context.router.transitionTo(mylink)但是上下文有问题…

这导致我(https://github.com/rackt/react-
router/issues/1059
),但是上下文返回并且对象为空,所以当我尝试做类似的事情时:this.context.router.transitionTo(mylink);我得到Cannot read property 'transitionTo' of undefined(如果我尝试做类似set的事情) this.context
=构造函数中的上下文)。

不要拖延,但我也对上下文弄得一头雾水,因为它仍在进行中,因此没有明确记录,因此我已经读过。

有没有人遇到过类似的问题?


问题答案:

在这里找到解决方案:https :
//github.com/rackt/react-router/issues/975,在这里:https : //github.com/rackt/react-
router/issues/1499

在构造函数中需要:

class SidebarFilter extends React.Component {

    constructor(props, context) {
        super(props, context);

还需要添加一个静态属性:

SidebarFilter.contextTypes = {
  router: React.PropTypes.func.isRequired
};

然后我可以打电话给:

this.context.router.transitionTo(/path-to-link);


 类似资料:
  • 问题内容: 使用 withRouter() 时如何获取路由上下文,位置,参数等? 您可以使用withRouter获得该信息,还是必须将这些内容显式传递到组件树中? 问题答案: 因此,不再使用。在道具中都可以使用: 因此,假设您想将用户转到新路线,您只需

  • 问题内容: 我开始认为这是不可能的,但是无论如何我都想问。 我想测试我的一个ES6模块以特定方式调用另一个ES6模块。有了茉莉花,这非常容易- 应用程式码: 和测试代码: 笑话相当于什么?我觉得这是一件很想做的简单的事,但是我一直在努力尝试弄清头发。 我最接近的是将s 替换为s,并将其移入测试/函数中。都不是我想做的事情。 为了获得加分,我希望在其中的功能为默认导出时使整个工作正常进行。但是,我知

  • 我正在使用反应和电子构建桌面应用程序。由于它增长迅速,我意识到我需要某种状态管理,如Redux,以避免在组件之间传递许多属性。我开始阅读Redux官方留档,但仍然不知道如何在我的情况下实现它。我卡住了! 例如,我有一个呈现许多子组件的主组件。其中一个有按钮。点击后,它应该向商店发送一个“事件”,以便主可以执行相应的操作。我怎样才能做到这一点?我找不到事件的概念,我已经在如何开始使用Redux上碰壁

  • 问题内容: 在花了一些时间学习React之后,我了解了创建组件的两个主要范例之间的区别。 我的问题是,什么时候应该使用哪个?为什么?一个人相对于另一个人的利益/取舍是什么? ES6课程: 功能性: 我认为只要没有状态可以由该组件操纵,功能就可以了,是吗? 我猜如果我使用任何生命周期方法,最好使用基于类的组件。 问题答案: 你有正确的主意。如果您的组件只做一些道具和渲染,那么功能就可以了。您可以将它

  • 问题内容: 使用此样板作为参考,我创建了一个Electron应用程序。它使用webpack捆绑脚本并通过Express Server托管脚本。 的WebPack配置是实质上相同的这个和服务器这样。 Electron的脚本加载: 然后index.html加载服务器托管的脚本: 我运行以构建应用程序并启动服务器,该服务器使用webpack将脚本捆绑在一起。 它工作正常,我的React组件App已安装。

  • 我是相当新的Reactor(Spring5 WebClient),虽然我已经想出了如何做简单的请求和处理它的输出与地图或平面图,我现在需要做一个有点困难的任务: 我有一个无法改变的终点。 这个endpoint调用的基本签名是Get