2017-10-11 9 views
0

Homeを起動すると、Headerのレイアウトを変更したいと思います。だからsetStateHomecomponentWillMountと呼ぶことにしました。どのように私は別のjsファイル内の他のコンポーネントにsetStateすることができます。ネイティブsetStateを他のコンポーネントに返す

Header.js

class Header extends React.Component { 
     constructor(props) { 
      super(props); 
      this.state = { type: '' }; 
     } 

     render() { 
      if(this.state.type == "home"){ 
       //do something 
      }else{ 
       //do something 
      } 
     } 
    } 

    module.exports = Header; 
    AppRegistry.registerComponent('myApp',() => Header); 

Home.js

class Home extends React.Component { 

     //set from here 
     componentWillMount(){ 
      this.setState({Header.state.type:'home'}); 
     } 
    } 

    module.exports = Home; 
    AppRegistry.registerComponent('myApp',() => Home); 
+0

「registerComponent()」にマウントされ、HomeとHeaderの両方をレンダリングする共通の親コンポーネントを使用する必要があります。 – xDreamCoding

+0

@xDreamCodingお返事ありがとうございます。申し訳ありませんが、私は反応ネイティブで非常に新しい、共通の親コンポーネントは何ですか?私に例を示すことができます。ありがとう –

答えて

0

あなたは一つの共通の親コンポーネントとAppRegistry.registerComponent()経由でマウント唯一の初期のコンポーネントを必要としています。そのような:あなたの他のコンポーネントで

Parent.js

class Parent extends React.Component { 
    constructor(props) { 
     super(props); 
     this.state = { type: '' }; 
    } 

    render() { 
     <Header></Header> 
     <Home></Home> 
    } 
} 

module.exports = Parent; 
AppRegistry.registerComponent('myApp',() => Parent); 

AppRegistry.registerComponent();呼び出しは削除する必要があります。

+0

これを行う別の方法はありますか?私は 'StackNavigator'を使っているので、親コンポーネントはありません –

関連する問題