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

React Router-更新URL哈希而不重新呈现页面

水铭晨
2023-03-14
问题内容

我正在使用react-router寻找一种更新页面URL
/哈希的方法,而无需路由器重新渲染整个页面。

我正在开发一个全页轮播,并且希望每个幻灯片都有其自己的URL(允许用户刷新页面并返回正确的幻灯片)。转盘稍后将进行类似于此演示的滑动,这意味着
一张幻灯片已预渲染。

我的旋转木马的精简版在这里提供。

当前的幻灯片更改如下所示:

onClickLeft: function() {
  this.setState({
    selected: this.state.selected - 1
  });
}

这可以正常工作,没有URL更新。我真正想要的是:

mixin: [Navigation],
onClickLeft: function() {
  this.transitionTo('carousel-slide', {num: this.state.selected + 1});
}

这将设置当前幻灯片的道具,从而使轮播动画。但是,现在使用此方法会导致页面重新渲染,并且不会显示动画。

我已经看到了ReactCSSTransitionGroup用于路线转换的,但是这似乎是为了呈现新页面并过渡到旧页面。

如果已经有一种方法可以实现我所寻找的目标,而我却错过了,有人可以指出我正确的方向吗?


问题答案:

1.0

react-router不再在您的路线上设置密钥。如果确实需要从路由处理程序设置键,请将其放在周围的元素上。

return (
  <div key={this.props.params.bookId}>
    {this.props.children}
  </div>
);

0.13

现在<ReactRouter.RouteHandler key="anything" />,但是由于react-
router的更改,也不再真正需要此功能。请参阅更改日志以获取更多详细信息。

当前,react-
router根据当前路由在您的处理程序上设置密钥。当react进行比较时,如果发现一个不同的密钥,它将以虚拟和真实dom丢弃整个子树,然后重新渲染。

为了防止这种情况,您可以在使用activeRouteHandler()时覆盖react-router的键

this.props.activeRouteHandler({key: "anything"})


 类似资料:
  • 问题内容: 我一直在看这些页面(1,2,3)。我基本上想更改自己的,但是我不想重新加载页面。 我目前在页面上,当我单击按钮并使URL变为时,我想进入编辑模式。 我的状态很简单,所以没有必要重新加载整个页面。但是,我确实希望and和or 进行更改,以便如果用户刷新页面,则页面将以编辑模式启动。 我能做什么? 问题答案: 对于此问题,您可以仅创建既不具有也不具有的子状态,并在正常情况下向前移动: 这里

  • 问题内容: 我正在尝试通过一些过程在外部javascript文件中使用此语句刷新页面。 它完美地重新加载了页面,但是重新加载后我想滚动到特定的位置。因此,我将其放在页面上。 并将javascript更改为 此代码也不会重新加载/刷新页面 当我这样做时,它根本不会重新加载页面。有什么办法可以用滚动条位置重新加载页面? 问题答案: 首先添加哈希,然后重新加载页面。哈希将保留在那里,并且页面将被重新加载

  • 我不知道为什么这不起作用 单击该按钮显然会更改道具,但旧的仍在输入中!那么什么给了?我做错了什么?这是虫子吗?有变通办法吗?

  • 问题内容: 我梦ed以求的是chrome(开发者通道)实现了一种无需重新加载页面即可通过javascript(地址而不是域)更新地址栏的方法,或者他们确实做到了。 但是,我找不到我 想 读的文章。 我疯了还是有办法做到这一点(在Chrome中)? ps我不是在谈论window.location.hash等。如果以上存在,则该问题的答案将是不正确的。 问题答案: 现在,您可以在大多数“现代”浏览器中

  • 问题内容: 当大小超过maxthreshold值时,如何在哈希表或哈希表中进行重新哈希处理? 是否所有对都已复制到新的存储桶阵列中? 编辑: 重新哈希后,同一存储桶(位于链接列表中)中的元素会发生什么情况?我的意思是说,他们在重新哈希处理后会留在同一个桶中吗? 问题答案: 问题中的最大阈值称为负载系数。 建议负载系数约为0.75。负载因子定义为(m / n),其中n是哈希表的总大小,m是在需要增加