2016-01-20 84 views
0

我有2个组件:第一组分和第二组分,其本身是组分的儿童,并且所述第一组件有一个孩子FIRST_CHILD。现在我想基于first_child中的元素是否已被点击来更新(显示/隐藏)第二个组件。兄弟姐妹组件之间的通信

回答

0

您可以使用下面提及的代码

var FirstChild=React.createClass({ 
    render:function() 
    { 
    return(
     <div> 
     <h1>First Component Child</h1> 
     <button onClick={this.props.Click} >Click</button> 
     </div> 

    ) 
    } 
}); 
var First=React.createClass({ 
    render:function() 
    { 
    return(
     <div> 
     <h1>First Component</h1> 
     <FirstChild Click={this.props.click}/> 
     </div> 

    ) 
    } 
}); 
var Second=React.createClass({ 
    render:function() 
    { 
    return(
     <div> 

     <h1>Second Component</h1> 
     {this.props.isShow?<h1>Show</h1>:null} 
     </div> 

    ) 
    } 
}); 

var ParentComponent=React.createClass({ 
    getInitialState:function() 
    { 
    return{ 
     isShow:false 
    } 
    }, 
    ClickEvent:function() 
    { 
    alert('clicked'); 
    this.setState({isShow:true}); 
    }, 
    render:function() 
    { 
    return(
     <div> 
     <First click={this.ClickEvent} /> 
     <Second isShow={this.state.isShow}/> 
     </div> 

    ) 
    } 
}); 
React.render(
    <ParentComponent />, 
    document.getElementById('example') 
); 

Demo

+0

是的,这应该工作。但也许我还没有足够清楚: 一个元素是** NavBar **,另一个是** List **,并且该列表包含一个组件** ListItem **,它会生成一个** ListItem **为数据库中的每个项目。现在我已经为所有这些项目提供了一个复选框,并且我希望使用此复选框作为NavBar右侧图标的切换。如果没有勾选复选框=>隐藏iconInNavbar;否则显示它。 –