【问题标题】:React-native TextInput value receiving object but I am clearly passing it a string?React-native TextInput 值接收对象,但我清楚地传递了一个字符串?
【发布时间】:2018-12-04 20:16:33
【问题描述】:
state={username:"",password:""}

...

<TextInput style={styles.inputStyle}
    placeholder='email123@mail.com' 
    autoCorrect={false}
    value={this.state.username}
    onChange={text =>{ 
        this.setState({username:text});
        console.log(this.state.username);
    }}
/>

我得到的错误是 value 被传递给一个对象,它引用了这个 textInput 开始的行,但我不明白这是怎么可能的

样式只是:

let styles ={
    titleStyle:{
      fontWeight:'bold',
      fontSize: 20,
      textAlign:'center'
    },
    inputStyle:{
      backgroundColor:'#d4d4d4'
    }
}

在渲染内部。

【问题讨论】:

  • styles.inputStyle 是什么?你能告诉我们完整的代码吗?你能告诉我们完整的错误信息吗?

标签: javascript react-native textinput


【解决方案1】:

onChange会返回一个对象,如果你使用onChangeText,它会直接返回值。

<TextInput 
    style={styles.inputStyle}
    placeholder='email123@mail.com' 
    autoCorrect={false}
    value={this.state.username}
    onChangeText={text => this.setState({ username: text })}
/>

或者,如果你想使用onChange,你可以这样做:

<TextInput 
    style={styles.inputStyle}
    placeholder='email123@mail.com' 
    autoCorrect={false}
    value={this.state.username}
    onChange={event => this.setState({ username: event.target.value })}
/>

阅读React Native - Difference between onChange vs onChangeText of TextInput

【讨论】:

    【解决方案2】:

    使用 onChangeText 代替 onChange。

    【讨论】:

      【解决方案3】:

      试试这个代码: onChange={this.onUserChange}

      onUserChange = (e, {value}) => { if (value) this.setState({username:value}) }

      【讨论】:

        猜你喜欢
        • 2017-12-28
        • 2019-01-31
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 2016-02-04
        • 2020-04-27
        • 1970-01-01
        • 2017-11-04
        相关资源
        最近更新 更多