1. location

Location代表了应用现在的位置,你想要它去哪里,或者甚至它过去在哪儿。它看起来像这样:

{
  key: 'ac3df4', // 不是HashHistory!
  pathname: '/somewhere'
  search: '?some=search-string',
  hash: '#howdy',
  state: {
    [userDefined]: true
  }
}

路由器会在几个地方提供一个location对象:

它也存在于history.location,但你不应该使用它,因为它是可变的。您可以在history中读到更多关于它的信息。

location对象永远不会发生突变,因此您可以在生命周期钩子中使用它,以确定什么时候进行导航,这对数据获取和动画非常有用。

componentWillReceiveProps(nextProps) {
  if (nextProps.location !== this.props.location) {
    // navigated!
  }
}

您可以提供locations,而不是字符串来导航的各个地方:

通常你只是使用一个字符串,但是如果你需要添加一些"location 状态",这将是可用的。每当应用程序返回到特定的位置,你可以使用一个location对象替代这些字符串。如果您希望基于导航历史而不是仅仅路径(像模态框)来分支UI,这是非常有用的。

// 通常需要这样
<Link to="/somewhere"/>

// 但你可以使用一个location来代替
const location = {
  pathname: '/somewhere'
  state: { fromDashboard: true }
}

<Link to={location}/>
<Redirect to={location}/>
history.push(location)
history.replace(location)

最后,您可以将一个location传递给以下组件:

这将阻止他们在路由器的状态中使用实际的位置。这对于动画和正在等待的导航是很有用的,或者任何时候您想要欺骗组件,渲染它们到不同的位置,而不是实际的位置。

Copyright © tuzhu008 2017 all right reserved,powered by Gitbook该文件修订时间: 2017-11-26 15:52:19

results matching ""

    No results matching ""