【问题标题】:Proper way to set state between two react components在两个反应组件之间设置状态的正确方法
【发布时间】:2016-05-05 21:17:14
【问题描述】:

我有一个用于Navbar 的组件和一个用于Sidebar 的组件。侧边栏组件有一个状态变量来决定它是否应该打开。这是我所拥有的。

export default class Sidebar extends Component {
  constructor() {
    super(...arguments);
    this.state = { open: false };
  }
  toggle() {
    this.setState({ open: !this.state.open });
  }
  render() {
    return (
      <LeftNav open={this.state.open}>
        <MenuItem
          onClick={this.toggle.bind(this)}
          primaryText="Close"
          leftIcon={<CloseIcon/>}
        />
      </LeftNav>
    )
  }
}

我遇到的问题是从单独的组件导航栏访问切换功能。

<AppBar
  title="Navbar"
  iconElementLeft={
    <IconButton onClick={}>  // want to enable clicking here to close sidebar component
      <MenuIcon>
    </IconButton>
  }
/>

我想知道的是,设置单独组件状态的最佳做法是什么?

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    您已进入令人兴奋的“数据流”领域。

    实现这一点的一种方法是使用某种集中式对象来侦听事件并将信息分派给其他组件。换句话说,您的 NavBar 处理程序可以调度许多框架所称的带有一些信息的“动作”,然后其他组件可以根据来自该事件的信息重新呈现。

    如果您喜欢此类事情的预打包解决方案,那么一个越来越受欢迎的库是redux。如果不出意外,它将帮助您深入了解其他人目前是如何做这类事情的。

    【讨论】:

    • 我见过 redux,但从来没有完全理解它的用途——感谢上面的指针
    • 另外,如果有人来这里寻找资源,我发现这基于 redux 非常有帮助:egghead.io/lessons/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    相关资源
    最近更新 更多