javascript 带值的TextInput不更改值

mctunoxg  于 12个月前  发布在  Java
关注(0)|答案(7)|浏览(81)

在我的react-native应用程序中,我有一个API,我正在从中检索数据,并且我正在设置输入值中的数据,用户应该能够编辑这些输入并更新,但是当我尝试输入输入时,它不会输入任何内容,并且值保持不变,下面是TextInput代码:

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

s4n0splo1#

我遇到了同样的问题,直到我把value属性改为defaultValue

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

我在React的文档here上找到了这个信息

gjmwrych

gjmwrych2#

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

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

阅读更多关于处理TextInputhere

m1m5dgzv

m1m5dgzv3#

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

state: {
     email: ''
}

第一次使用必须添加的API值填充TextInput

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

你的文本输入会像下面这样:

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

希望这个工作…

disbfnqx

disbfnqx4#

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

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

value={this.state.title} -而不是this
defaultValue={this.state.title} -使用这个
这就是全部。享受你的编码.

mmvthczy

mmvthczy5#

我想你的处理函数中有一个错误。当你调用setState时,你更新了this.state.email,但在你的文本输入值中你使用了this.state.info.email,你也把事件对象写入了电子邮件,而不是字段的新值(event.target.value)。你应该用这样的东西。

onChangeHandler = event => {
  const newEmail = event.target.value
  this.setState({ info: {email: newEmail})}
}

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

hc8w905p6#

我不知道这是否是一个好的方法或没有,但Dustin Spengler的答案为我工作,没有任何问题。我没有足够的声誉来支持和评论。

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

qyyhg6bp7#

  • 如果以上answere不工作!***
    试试这样

当你把***valueprop改为defaultValue*时,你必须把它变成一个字符串,
defaultValue不接受number
您可以使用
toString()**方法将其转换为字符串。
如下图所示

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

更多关于React文档here的信息

相关问题