Javascript React.js:同一父母的两个孩子之间的沟通?

Javascript React.js:同一父母的两个孩子之间的沟通?,javascript,reactjs,Javascript,Reactjs,我有一个父组件:Previewer,它呈现两个子组件 class Previewer extends Component { render() { return ( <AudioPlayer /> <SubtitleRow /> ); } } 类预览器扩展组件{ render(){ 返回( : 用于在两个没有 父子关系,您可以设置自己的全局事件 订阅componentDidMount()中的事件,取消订阅 compone

我有一个父组件:
Previewer
,它呈现两个子组件

class Previewer extends Component {
  render() {
    return (
      <AudioPlayer />
      <SubtitleRow />
    );
  }
} 
类预览器扩展组件{
render(){
返回(
:

用于在两个没有 父子关系,您可以设置自己的全局事件 订阅componentDidMount()中的事件,取消订阅 componentWillUnmount(),并在收到事件时调用setState()。 通量模式是安排这种情况的可能方式之一

我认为他们有关系(兄弟姐妹),那么,有没有其他方法来实现他们的沟通


根据JavaScript的良好部分或JavaScript设计模式,不建议使用全局事件或变量。

您可以使用状态将变量传递给AudioPlayer组件。然后在SubtitleRow组件中,您可以调用函数this.props.onClick(startTime,endTime)

类预览器扩展组件{
构造函数(){
this.state={'startTime':0,'endTime':0};
this.handleClick=this.handleClick.bind(this);
}
handleClick(开始时间,结束时间){
这是我的国家({
“开始时间”:开始时间,
“endTime”:endTime
});
}
render(){
返回(
);
}
} 

您链接的页面讨论了父子关系(尽管我认为后者没有很好的解释)-要处理同级关系,您可以将这些结合起来。使父组件保留所有逻辑/状态以协调子组件,通过道具将必要的数据传递给子组件,将事件传递回父组件(您可以通过将回调作为道具传递来实现这一点)。这样做的好处是,组件只关心它们自己和它们控制的组件,所以事情很好地解耦了。请参阅使用回调作为与父组件通信的道具的示例。我对reactjs不熟悉,但这可能会有所帮助。
然后
someFunction:function(){this.setState({x:“/”})
然后添加``是的,但是他如何从SubtitleRow中获取开始和结束?在SubtitleRow组件中,他应该调用this.props.onClick(startTime,endTime),然后它将调用父组件(Previewer)中的handleClick函数这将刷新状态,然后音频播放器将使用新的开始时间和结束时间重新渲染
class Previewer extends Component {
 constructor() {
     this.state = { 'startTime': 0, 'endTime' : 0 };
     this.handleClick= this.handleClick.bind(this);
 }

 handleClick(startTime, endTime) {
   this.setState({
     'startTime': startTime,
     'endTime': endTime
   });
 }

  render() {
    return (
      <AudioPlayer startTime="{this.state.startTime}" endTime="{this.state.endTime}"/>
      <SubtitleRow onClick="{this.handleClick}" />
    );
  }
}