2017-03-15 46 views
0

我想隱藏我的反應,本機導航欄「完成」按鈕,根據狀態使用狀態,以隱藏/顯示視圖

this.state = { 
    doneButtonHidden: true 
} 

我的國家已經將其設置爲true

doneButtonHidden(hidden) { 
    if (!hidden) { 
     return { 
      title: 'Done', 
      tintColor: '#ff9000' 
     } 
    } 
} 

然而,如果切換doneButtonHidden的價值和熱重載,它保持隱藏並且不更新

<NavigationBar 
    title={{title: 'Friends', tintColor: '#ff9000'}} 
    rightButton={this.doneButtonHidden(this.state.doneButtonHidden)} 
/> 

我在做什麼錯?

+0

你的意思是你按下「右鍵」,它什麼都不做? –

回答

1

兩樣東西:
- 更改狀態時需要使用setState()
看到這個:https://facebook.github.io/react-native/docs/state.html
- 當你說this.state.doneButtonHiddenthis指當前對象,而不是詞彙。
我會做這樣的事情:

render(){ 
    // This way you can pass a boolean into 
    // the doneButtonHidden function. 
    let hidden = this.state.doneButtonHidden ? true : false; 
    return(
    ... more stuff here ... 
    <NavigationBar 
     title={{title: 'Friends', tintColor: '#ff9000'}} 
     // If use you use arrow function syntax, you have access 
     // to lexical this. 
     rightButton={() => { 
       // If 'rightButton' is supposed to change 
       // state use this line. 
       this.setState({doneButtonHidden: false}) 
       doneButtonHidden(hidden)} 
      } 
    /> 
    ... more stuff here ... 
); 
} 
+0

忘記了完全失眠,明天就會實施 – ARMATAV