具有值的TextInput不会更改值

时间:2019-01-09 20:34:18

标签: javascript react-native textinput

在我的本地应用程序中,我有一个API,可以从中检索数据,并且可以在输入值中设置数据,用户应该可以编辑这些输入并进行更新,但是当我尝试键入时在输入中,它不会键入任何内容,其值保持原样,这是TextInput代码:

<TextInput
   placeholder= Email
   value={this.state.info.email}
   onChangeText={email => this.setState({ email })}/>

6 个答案:

答案 0 :(得分:1)

由于我认为电子邮件不是您的state.info的唯一支柱,因此建议您正确使用setState(),以便仅修改该字段。根据不变性和ES6,类似:

<TextInput
  placeholder="Email"
  value={this.state.info.email}
  onChangeText={text =>
    this.setState(state => {
      return {
        ...state,
        info: {
          ...state.info,
          email: text
        }
      };
    })
  }
/>;

详细了解如何处理TextInput here

答案 1 :(得分:0)

我认为您的处理程序函数有错误。调用setState时,您更新了function nesting(array, iteratorFunction) { return array.filter( function(a){ return function(b){ return false; }(a) } ); } ,但在使用this.state.email的文本输入值中,您也将事件对象写入了电子邮件,而不是字段的新值(this.state.info.email )。您应该使用类似这样的东西。

event.target.value

答案 2 :(得分:0)

首先,您需要声明状态,然后将该状态应用于TextInput Value。

state: {
     email: ''
}

并使用您必须添加的API值首次填充TextInput

componentDidMount(){
  this.setState({email: this.props.info.email});
}

,您的TextInput将如下所示:

<TextInput
   placeholder= Email
   value={this.state.email}
   onChangeText={value=> this.setState({ email: value})}/>

希望这行得通..

答案 3 :(得分:0)

直到我将value道具更改为defaultValue之前,我遇到了同样的问题:

<TextInput
   style={styles.inputBox}
   onChangeText={title => this.setState({ title })}
   defaultValue={this.state.title}
   placeholder='Title'
/>

我在React的文档here

中找到了此信息

答案 4 :(得分:0)

我不知道这是否是一个好方法,但 Dustin Spengler 答案对我来说没有任何问题。我没有足够的声誉来点赞和评论。

<TextInput
style={styles.inputBox}
onChangeText={title => this.setState({ title })}
defaultValue={this.state.title}
placeholder='Title'
/>

答案 5 :(得分:0)

我也遇到了同样的问题,直到我像这样将 value prop 更改为 defaultValue:

<TextInput
   style={styles.inputBoxSize}
   onChangeText={title => this.setState({ title })}
   defaultValue={this.state.title}
   placeholder='Title'
/>

value={this.state.title} - 而不是这个

defaultValue={this.state.title} - 使用这个

仅此而已。享受你的编码...