发布
社区首页 >问答首页 >反应-组件之间的通信(对于初学者)

反应-组件之间的通信(对于初学者)
EN

Stack Overflow用户
提问于 2016-12-11 20:22:06
回答 2查看 86关注 0票数 0

我是真实的新的反应JS。几周前,我在JS、jQuery中创建了清单应用程序,现在我将使用React重新构建它,只是为了改变我的观点和实践反应。

我在不同的文件中有几个组件(兄弟姐妹)和一个父组件- App,components:

应用程序:-导航-任务列表-添加任务-页脚

我的导航组件如何与任务列表组件通信?更具体地说,我想拥有类似全局变量 selectedDay之类的东西,并在所有组件中使用它。当用户在导航组件中选择某一天(例如星期日)时,我希望将" Sunday“保存在这个变量中,然后在Task中使用它(当然,这是数据的示例示例)。我的问题是如何在第一个组件中存储数据并在另一个中使用它?

我应该为此目的使用状态吗?我正在考虑在父组件(App)组件-> selectedDay中设置初始状态:“星期一”/默认/稍后通过导航组件更新它并在任务列表组件中使用。你能帮帮我吗?我会感激你的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-12 17:28:10

有两种解决方案。

1-使用一个处理全局状态的库,如Redux (正如FurkanO所说)。这样,您的“大组件”(又名容器)就会连接到应用程序的全局状态,并使用操作更新它。动作是一种类型的事件,有时是有效负载,将被还原器拦截并触发状态更新。

2-使用您希望看到交互的组件的最低公共父级的状态。

2-:父组件包含导航和TaskList的基本示例。

代码语言:javascript
代码运行次数:0
复制
class Parent extends Component {
  state = {
    selectedDay: defaultDay,
  }

  setDay = (selectedDay) => {
    this.setState({ selectedDay });
  }

  render () {
    const { selectedDay } = this.state;
    return (
      <div>
        <Navigation setDay={this.setDay} />
        <TaskList selectedDay={selectedDay} />
      </div>
    );
  }
}

然后,您只需在导航组件中使用这个setDay函数来设置父组件中的状态。这样,您的TaskList将通过它的道具接收新的值。这种方法有它的局限性(在我看来,它确实不是很好)。

希望能帮上忙。如果你不清楚,请告诉我。

票数 0
EN

Stack Overflow用户

发布于 2016-12-11 20:53:07

你需要的是复古。它为您提供了一个全局状态树,它是一个对象,是一种操作它的方法,最重要的是,每当您的状态树更改更改您的组件时。以便您的组件总是更新状态树的最新版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41090751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档