如何清除SlideTextInput(自定义TextInput组件)中的输入?

时间:2017-10-20 16:34:53

标签: react-native

当然抱歉,如果这个问题有点愚蠢。

在我正在开发的应用程序中,用户应该可以在TextInput上滑动。由于TextInput只监听水龙头,因此我使用了这个要点:https://gist.github.com/MikeShi42/87b65984f0a31e38d553cc056fcda017 (BTW @Michael Shi非常感谢)

但是,一旦我将TextInput更改为SlideTextInput,Clear按钮就不再起作用了。

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:最后答案很简单。而不是像原始TextInput那样将组件链接到其原生对应物(ref={this._setNativeRef}),而是将SlideTextInput引用为字符串(ref="input")。我改回来了,瞧。

2 个答案:

答案 0 :(得分:0)

查看代码似乎没有将值props发送到原始TextInput。它正在扩展TextInput但它返回另一个组件而不发送值prop。

尝试:

this.refs.input.setText('');

答案 1 :(得分:0)

最后答案很简单。而不是像原始TextInput那样将组件链接到其原生对应物(ref = {this._setNativeRef}),而是将幻灯片文本输入引用到字符串(ref =&#34;输入&#34;)(它&#39;) ; s不是关于我的代码中的道具,它是关于SlideTextInput.js文件本身的)。我改回来了,瞧。