2017-10-05 30 views
1

別のコンポーネントで自分の状態を変更しようとしています。私は要素をクリックしたときの状態を変更したい私のMobileContentコンポーネントで小道具React - 子コンポーネントの状態を変更する

constructor(props) { 
    super(props); 

     this.handleClick = this.handleClick.bind(this); 

     this.state = { 
      isOpen: false 
     }; 
    } 

<MobileContent isOpen={this.state.isOpen} /> 

によって状態が合格しています。

class MobileContent extends Component { 

    render() { 
    if (this.props.isOpen) { 
     return (
      <Grid fluid> 
       <div className="mobileContent"> 
       <Row center="xs"> 
        <Col xs={12}> 
        <span className="button">Hello, world!</span> 
        <span className="close" onClick={this.handleClick} >X</span>    
        </Col>     
       </Row> 
       </div> 
      </Grid> 
     ); 
    } 
    return null; 
    } 
} 

export default MobileContent; 

ありがとうございました!

+0

あなたは閉じるボタンがクリックされたときに親コンポーネントで 'isOpen'状態プロパティを更新しようとしていますか? 「国家」と「要素」が意味することについて、より多くの情報を提供してください。 –

+0

私はそれを働かせた、ありがとう@T –

答えて

2

子コンポーネントが親に通知するようにするには、関数である子に追加の小道具を渡す必要があります。子供はそれを呼び出すことができます。だから、親で:

constructor(props) { 
    super(props); 

    this.handleClick = this.handleClick.bind(this); 

    this.state = { 
     isOpen: false 
    }; 
} 

<MobileContent isOpen={this.state.isOpen} onClose={this.handleClick}/> 

と子で:

render() { 
    if (this.props.isOpen) { 
     return (
      <Grid fluid> 
       <div className="mobileContent"> 
       <Row center="xs"> 
        <Col xs={12}> 
        <span className="button">Hello, world!</span> 
        <span className="close" onClick={this.props.onClose}>X</span>    
        </Col>     
       </Row> 
       </div> 
      </Grid> 
     ); 
    } 
    return null; 
    } 
関連する問題