我創建了一個組件/視圖,其中包含要從類似於表視圖中選擇的事物列表。React Native:更改導航器Pop上的組件(文本)Pop
當我在視圖中我可以通過導航器推動跳轉到此表視圖。一旦選擇一個項目,我做一個流行音樂。不過,我希望視圖A中的文本組件更新爲適當的值。
我正在考慮傳遞對這個文本組件的引用,但它聽起來不對。任何其他方式我可以實現這一目標?
我找不到任何可以在兩種平臺上工作的表格視圖,如果您有任何好的建議,請告知我們。
我創建了一個組件/視圖,其中包含要從類似於表視圖中選擇的事物列表。React Native:更改導航器Pop上的組件(文本)Pop
當我在視圖中我可以通過導航器推動跳轉到此表視圖。一旦選擇一個項目,我做一個流行音樂。不過,我希望視圖A中的文本組件更新爲適當的值。
我正在考慮傳遞對這個文本組件的引用,但它聽起來不對。任何其他方式我可以實現這一目標?
我找不到任何可以在兩種平臺上工作的表格視圖,如果您有任何好的建議,請告知我們。
的作出反應的方式來實現,這是一個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
}
...
我通過在表視圖中將{this}傳遞給表視圖作爲prop並調用this.props.parent.setState({selection:selectedThing})來解決它。
我想的setState會重新渲染整個視圖,擺脫任何用戶輸入,但它似乎只是重新渲染變動的零件