React Router等待解决

穆罕默德·玛哈拉维(Mohamed El Mahallawy)

我来自Angular,习惯于ui-router的解析功能,该功能使等待和将结果注入控制器变得容易。

当前,我想用react来模仿它,而componentWillMount在使用React Router时不必在方法中编写请求(或触发动作)我认为有更好的方法可以做到,只是我还没有弄清楚。

希望获得一些建议或将我指向可以学习的地方

安德斯·埃克达尔

最好的选择是在Router.runhttp://rackt.github.io/react-router/#Router.run)中使用回调每当URL更改时,您传递给该回调的回调都会被调用,它负责重新渲染,例如从页面中提取的以下示例:

Router.run(routes, function (Root) {
  // whenever the url changes, this callback is called again
  React.render(<Root/>, document.body);
});

在该函数中,您可以在调用之前执行所需的任何异步操作React.render(),如下所示:

Router.run(routes, function (Root) {
  // whenever the url changes, this callback is called again
  asyncStuff().then(function (data) {
    React.render(<Root data={data} />, document.body);
  });
});

这种方法的问题在于,直到该数据可用,您的UI才会完全反应。相反,我建议您以空状态渲染组件,componentDidMount并在传入数据时提取数据,然后在数据进入时重新渲染。甚至更好的是,将数据提取和渲染分成两个组件。一个组件获取数据,并将其作为属性传递给呈现组件。除非数据在那里,否则数据获取组件甚至可以避免呈现其他组件,例如:

render: function () {
  if (this.state.data) {
    return <TheComponent data={this.state.data} />;
  } else {
    return <Spinner />;
  }
}

这是React中的一种常见模式,用于分离处理数据获取和状态的组件以及呈现该状态的组件。您希望将有状态组件尽可能地推向层次结构,因为它会创建逻辑边界。有状态的组件是90%的bug发生的地方,当您在寻找bug时可以专注于这些组件。

等待的另一个问题是用户可能会快速导航,这意味着Router.run在第一个数据进入之前将再次调用回调。因此,您需要确保中止最后一个操作并且根本不渲染该操作。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React-React Router Dom,hashbang路由解决方案

来自分类Dev

解决:在等待数据时,React Material UI在表中显示进度

来自分类Dev

为什么 React Router 会破坏 create-react-app 测试?如何解决这个问题?

来自分类Dev

PhpStorm无法解决软件包导入,即使它存在(react-router-dom)

来自分类Dev

使用React Router v4的嵌套路由-解决方案

来自分类Dev

异步等待不等待解决

来自分类Dev

等待不是在等待诺言解决

来自分类Dev

React-router是$?

来自分类Dev

如何调试React Router?

来自分类Dev

React Router深层链接

来自分类Dev

ReactJS React Router参数

来自分类Dev

React Router:嵌套资源

来自分类Dev

空格问题-React Router

来自分类Dev

与 React Router 的混淆

来自分类Dev

在React中等待useState更新?

来自分类Dev

React + Redux - 等待动作结束?

来自分类Dev

我该如何解决模块解析失败的问题:意外令牌(11:9)react-router-native

来自分类Dev

React 0.14-使用react-router

来自分类Dev

在React + React Router中进行作用域

来自分类Dev

使用react-router的React页面布局

来自分类Dev

带有KOA的React Router的同构React

来自分类Dev

React JS - React Router - 单独渲染内容

来自分类Dev

React 中的永久状态 - React-Router

来自分类Dev

尝试解决React Context的问题

来自分类Dev

React HOC无法解决导入

来自分类Dev

异步 - 等待不等待承诺解决

来自分类Dev

React Router和导航按钮

来自分类Dev

React Router导航栏示例

来自分类Dev

React-Router onChange钩子