2017-10-11 44 views
0

我想在啓動Home時更改Header中的一些佈局。所以我決定撥打setStateHomecomponentWillMount。我怎樣才能將狀態設置爲不同的js文件中的其他組件。React Native - 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嗨感謝您的回覆。對不起,我在react-native中很新,什麼是常見父組件?可以給我一個例子。謝謝 –

回答

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',所以沒有父組件 –