2016-04-03 36 views
0

我創建了一個組件/視圖,其中包含要從類似於表視圖中選擇的事物列表。React Native:更改導航器Pop上的組件(文本)Pop

當我在視圖中我可以通過導航器推動跳轉到此表視圖。一旦選擇一個項目,我做一個流行音樂。不過,我希望視圖A中的文本組件更新爲適當的值。

我正在考慮傳遞對這個文本組件的引用,但它聽起來不對。任何其他方式我可以實現這一目標?

我找不到任何可以在兩種平臺上工作的表格視圖,如果您有任何好的建議,請告知我們。

回答

0

的作出反應的方式來實現,這是一個callback函數傳遞給命名屬性,讓我們假設在這種情況下onSelect

MyParentComponent extends Component { 
    ... 
    MySelectHandler(value) { 
     this.setState({ 
      valueSelected: value 
     }); 
    }, 
    ... 
} 

創建你的選擇器組件:

<MyCustomTableView onSelect={this.MySelectHandler}/> 

而在你的組件:

MyCustomTableView extends Component { 
    ... 
    onValueSelected(value) { 
     this.props.onSelect(value); 
    } 
    ... 
} 

考慮到你的「重新渲染」問題,做出反應只更新組件取決於誰已經改變以前的狀態。由於您的輸入可能不依賴於狀態,因此它們不會更新,因爲沒有更改它們。

如果要在valueSelected關鍵狀態得到更新時清除所有輸入,可以使用生命週期方法componentDidUpdate(),並在每次更新值後手動清除輸入。

// In MyParentComponent 
componentDidUpdate(prevProps, prevState) { 
    if (prevState.valueSelected !== this.state.valueSelected) 
     this.refs.myInput.value = ''; // Do this for each input, you'll need to add a unique ref attribute for each one 
} 
... 
0

我通過在表視圖中將{this}傳遞給表視圖作爲prop並調用this.props.parent.setState({selection:selectedThing})來解決它。

我想的setState會重新渲染整個視圖,擺脫任何用戶輸入,但它似乎只是重新渲染變動的零件