将 this.state 传递给 react-router 1.x / React, Flux 中的子级

Posted

技术标签:

【中文标题】将 this.state 传递给 react-router 1.x / React, Flux 中的子级【英文标题】:Pass this.state to children in react-router 1.x / React, Flux 【发布时间】:2015-10-24 09:25:55 【问题描述】:

我正在使用 react-router 对我命名为 App 的***路由执行身份验证。我的应用正在使用以下

  <div className="app-wrapper">
    <NavbarC currentUser=this.state.currentUser />
    this.props.children
  </div>

我希望能够将this.state.currentUser 传递给this.prop.children

这可能吗,还是我应该使用我创建的 UserStore 创建一个新状态?

【问题讨论】:

【参考方案1】:

由于我使用的是通量,因此处理它的正确方法似乎是从存储中为每条路线提取数据。我的路线如下所示:

let getCurrentUserFromStore = () => 
  return  currentUser: UserStore.getCurrentUser() ;


export default class Landing extends React.Component
  constructor(props) 
    super(props);
    this.state = getCurrentUserFromStore();
    this.onStoreChange = this.onStoreChange.bind(this);
  
  onStoreChange() 
    this.setState(getCurrentUserFromStore());
  
  componentDidMount() 
    UserStore.addChangeListener(this.onStoreChange);
  
  componentWillUnmount() 
    UserStore.removeChangeListener(this.onStoreChange);
  
  render() 
    if ($.isEmptyObject(this.state.currentUser)) 
      return <LoginPage />
     else 
      return <DashboardPage currentUser=this.state.currentUser />
    
  

【讨论】:

以上是关于将 this.state 传递给 react-router 1.x / React, Flux 中的子级的主要内容,如果未能解决你的问题,请参考以下文章

将 this.state 传递给 react-router 1.x / React, Flux 中的子级

反应:子组件未接收通过“this.state”传递的道具

将道具传递给路由器内部的组件

...this.state 和 this.state 之间的区别

如何将 this.state 转移到 react-routes?

将所有状态和道具传递给孩子们反应