onChange (preventDefault) 中的 TextInput 块发生变化?

Noi*_*art 6 react-native

我必须有一个不受控制的文本输入(由于某种原因此处未详细说明)。我试图阻止我的<TextInput>.

这是我的组件,这是它的 Snack 演示 - https://snack.expo.io/@noitsnack/textinput-block-onchange

class UncontrolledInput extends Component {
    inputRef = null

    render() {
        return (
            <View>
                <TextInput ref={this.refInput} onChange={this.handleChange} />
            </View>
        )
    }

    refInput = el => this.inputRef = el

    handleChange = e => {
        const { nativeEvent:{ text } } = e;

        // block i characters
        if (text.includes('i')) {
            e.preventDefault();
            e.stopPropagation();
            e.returnValue = false;
            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?虽然preventDefault和stopPoropagation存在于e他们似乎没有做任何事情。

Mat*_*Aft 0

您只是希望文本在某些情况下不更新?您始终可以将其绑定到状态值并确定状态值是否应更新:

class UncontrolledInput extends Component {
    state = {
      text: '',
    }

    render() {
        return (
            <View>
                <TextInput value={this.state.text} onChangeText={this.handleChange} />
            </View>
        )
    }

    handleChange = text => {
        // only update if no 'i'
        if (!text.includes('i')) {
            this.setState({ text });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)