reactjs - React Native - TextInput - 如何一起使用 value 和 defaultValue

标签 reactjs react-native

我得到了以下组件,我想用 defaultValue 初始化 TextInput,然后在用户键入时更新它的值。

我怎么做?

这是我尝试过的 - 但这样 TextInput 在初始化时总是空的。

class Note extends Component {
    state = {
        text: ""
    };

    render() {
        const {onChange} = this.props;

        return (
                <TextInput
                    onChangeText={(text) => {
                         this.setState({text}); 
                         onChange(text);
                    }
                    value={this.state.text}
                    defaultValue={this.props.text}
                />
        );
    } }

“ react ”:“^ 16.4.1”
"react-native": "^0.55.4",

最佳答案

终于解决了,

关键是以下 - “值”在“默认值”之前,除非“值”未定义!

所以,初始化 this.state.text = undefined ,这样 defaultValue 就可以用 this.props.text 初始化。

class Note extends Component {
    state = {
        text: undefined
    };

    render() {
        const {onChange} = this.props;

        return (
            <View>
                <TextInput
                    onChangeText={(text) => {
                         this.setState({text}); 
                         onChange(text);
                    }
                    value={this.state.text}
                    defaultValue={this.props.text}
                />
            </View>
        );
    }
}

我发现这比@anilSidhu 解决方案更干净。

关于reactjs - React Native - TextInput - 如何一起使用 value 和 defaultValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51780908/

相关文章:

reactjs - 在一个 reducer 文件中导出多个变量 REDUX

javascript - 从对象数组渲染多个 JSX 元素

javascript - 对 firebase currentUser 所做的更改只有在完全重新加载应用程序后才会反射(reflect)出来

javascript - React 禁用一个按钮,直到按下另一个按钮

reactjs - react "useRef": no access to method in . 当前

javascript - Material-UI TextField 上下文脏

javascript - 为什么我们需要 React 中的默认导出?

javascript - ReactJs 风格的组件

reactjs - 如何动态添加更多组件 React Native

reactjs - React Native 的中央样式表?