當然,如果問題有點愚蠢,我們會很抱歉。如何清除SlideTextInput(自定義TextInput組件)中的輸入?
在應用程序中,我開發一個用戶應該能夠刷卡中TextInput。由於的TextInput只聽輕拍我用這個要點:https://gist.github.com/MikeShi42/87b65984f0a31e38d553cc056fcda017 (BTW @邁克爾施感謝一噸)
但是,一旦我改變的TextInput到SlideTextInput清除按鈕停止工作。
clearInput() {
this.setState({text: ''});
}
render() {
return (
<Button name='clear' action={this.clearInput} />
<SlideTextInput
style={styles.input}
ref='input'
onChangeText={(text) => this.setState({text: text})}
placeholder={this.state.placeholder}
value={this.state.text}
multiline={true}
returnKeyType='done'
blurOnSubmit={true} />
)
}
我也試過this.refs.input.setNativeProps({text: ''});
,而不是僅僅通過一個新的value
道具(應該是 - 並且是 - 滿足正常的TextInput),並調用forceUpdate()
,但同樣無濟於事。與原始TextInput組件相比,我在SlideTextInput.js中看不到太多的變化,但是我必須缺少能夠解釋這種不良行爲的東西嗎?
UPD:答案是在年底相當簡單。 SlideTextInput並不像原始TextInput那樣將組件鏈接到其本機對象(),而是將它ref'ed爲一個字符串(ref="input"
)。我改回來了,瞧。
嘿,謝謝你的回答。 SlideTextInput實際上有一個道具'text = {this.props.value}',我剛剛發現了另外一件事情 - 如果我從另一個屏幕返回到屏幕,則清除按鈕可以工作(但它與textinput的selectionState無關。 –
是clearInput被解僱實際上呢?如果你添加一個日誌或警報有它執行每一次? – sfratini
哦,是的,那是我檢查的第一件事:)我接着說: {} this.state.text' 到頁眉看按鈕是否成功清除this.state.text - 這是,但輸入本身不是。最神奇的是,它實際上清楚,如果你_return_這個屏幕,看看在[截屏(https://d26dzxoao6i3hh.cloudfront.net/items/3G1R3P232R1J473A1D3Q/clear-button-behaviour.mp4) –