如何使用react-router触发状态更改?

布莱恩斯科尔德

我仍然对React和react-router有所了解,但我想知道如何使用react-router来简单地更新应用程序状态而无需重新呈现DOM节点。

例如,假设我有:

<Router history={browserHistory}>
  <Route path="/" component={App}>
    <IndexRoute screen="main" />
    <Route path="settings" screen="sync" />
    <Route path="overview" screen="overview" />
  </Route>
</Router>

我想重新使用react-router的匹配项,而只是更新App组件的当前屏幕。

原因是假设在上面的示例中,我有三个水平排列的屏幕,一次只能看到一个。当路线更改时,我想在适当的屏幕中制作动画。如果我通过为每个路由分配一个组件来做到这一点,则react-router会在路由匹配之前不渲染其他屏幕,并且屏幕滑入会有明显的滞后。

但是,如果我将所有三个屏幕都保留在DOM中,并且只需切换状态以触发CSS转换,就不会出现滞后(因为只要适当使用will-change,浏览器就可以预渲染屏幕外的图层)。

我已经尝试了六种方法来实现此目的,但是它们都非常笨拙,或者涉及重复复制匹配的代码。我究竟做错了什么?

另外,我想避免添加Redux之类的东西,只是为了尽可能地解决此问题。

用户名

所以您想要类似眼镜的东西吗?

在您的情况下,我会将所有屏幕都放置为该App组件的子级,并使用react-router的参数来了解您所处的屏幕。

<Route path="/(:screen)" component={App}>

它可以作为App组件的支持:

class App extends React.Component {
  componentWillMount () {
    this.props.params.screen
  }
}

有关react-router / injected-props上的路由参数的更多信息

如果您在重新渲染时遇到麻烦,可以使用组件生命周期方法shouldComponentUpdate返回false此方法将阻止组件重新渲染,并且您将拥有新的道具(还包括路线参数)。

class App extends React.Component {
  shouldComponentUpdate (nextProps) {
    nextProps.params.screen
    return false
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

触发状态“selectedOptions2”时如何映射()

来自分类Dev

子组件无法触发状态更改

来自分类Dev

更新URL而不触发状态更改

来自分类Dev

如何在Reactjs中从另一个组件触发状态

来自分类Dev

使用ui-sref在按钮标签中触发状态

来自分类Dev

阻止浏览器在使用visibilityChange事件触发状态更新时向上滚动

来自分类Dev

带窗口的Kafka Streams拓扑不会触发状态更改

来自分类Dev

如何使用React Router处理登录状态?

来自分类Dev

使用React-Router触发路由更改操作

来自分类Dev

如果我有一个按钮在React中的第二个子级中触发状态,如何将状态传递给父级组件

来自分类Dev

通过其同级触发状态更改时,子组件不会重新呈现

来自分类Dev

react-router我如何使用redirectLocation或301或302状态

来自分类Dev

如何使用react-router在组件中保存表单状态

来自分类Dev

在React Router中查询更改触发回调

来自分类Dev

React-router:`<Link to = ...>'不会触发导航更改

来自分类Dev

如何使用React-Router

来自分类Dev

当第三方库触发事件时,如何告诉React组件更改其状态?

来自分类Dev

React Js更改后如何更新状态?使用componentDidUpdate吗?

来自分类Dev

如何使用React-Router防止路由更改

来自分类Dev

当用户单击 react-router-dom 上的后退按钮时,如何更改组件的状态?

来自分类Dev

Angular ui router如何根据状态更改html

来自分类Dev

如何在状态栏中获取当前功耗?(开发状态图标)

来自分类Dev

使用ui-router简单启动功能而不更改状态

来自分类Dev

无法使用ui-router从网址栏更改状态

来自分类Dev

使用ui-router简单启动功能而不更改状态

来自分类Dev

如何在Android中使用后台服务触发wifi状态更改?

来自分类Dev

当登录状态为组件状态时,如何使用react-router实现与登录相关的路径?

来自分类Dev

使用UI-Router,如何对从父级到子级的状态更改进行操作?

来自分类Dev

如何从拦截器内部使用ui-router更改我的应用程序状态?

Related 相关文章

  1. 1

    触发状态“selectedOptions2”时如何映射()

  2. 2

    子组件无法触发状态更改

  3. 3

    更新URL而不触发状态更改

  4. 4

    如何在Reactjs中从另一个组件触发状态

  5. 5

    使用ui-sref在按钮标签中触发状态

  6. 6

    阻止浏览器在使用visibilityChange事件触发状态更新时向上滚动

  7. 7

    带窗口的Kafka Streams拓扑不会触发状态更改

  8. 8

    如何使用React Router处理登录状态?

  9. 9

    使用React-Router触发路由更改操作

  10. 10

    如果我有一个按钮在React中的第二个子级中触发状态,如何将状态传递给父级组件

  11. 11

    通过其同级触发状态更改时,子组件不会重新呈现

  12. 12

    react-router我如何使用redirectLocation或301或302状态

  13. 13

    如何使用react-router在组件中保存表单状态

  14. 14

    在React Router中查询更改触发回调

  15. 15

    React-router:`<Link to = ...>'不会触发导航更改

  16. 16

    如何使用React-Router

  17. 17

    当第三方库触发事件时,如何告诉React组件更改其状态?

  18. 18

    React Js更改后如何更新状态?使用componentDidUpdate吗?

  19. 19

    如何使用React-Router防止路由更改

  20. 20

    当用户单击 react-router-dom 上的后退按钮时,如何更改组件的状态?

  21. 21

    Angular ui router如何根据状态更改html

  22. 22

    如何在状态栏中获取当前功耗?(开发状态图标)

  23. 23

    使用ui-router简单启动功能而不更改状态

  24. 24

    无法使用ui-router从网址栏更改状态

  25. 25

    使用ui-router简单启动功能而不更改状态

  26. 26

    如何在Android中使用后台服务触发wifi状态更改?

  27. 27

    当登录状态为组件状态时,如何使用react-router实现与登录相关的路径?

  28. 28

    使用UI-Router,如何对从父级到子级的状态更改进行操作?

  29. 29

    如何从拦截器内部使用ui-router更改我的应用程序状态?

热门标签

归档