在我的本地应用程序中,我有一个API,可以从中检索数据,并且可以在输入值中设置数据,用户应该可以编辑这些输入并进行更新,但是当我尝试键入时在输入中,它不会键入任何内容,其值保持原样,这是TextInput代码:
<TextInput
placeholder= Email
value={this.state.info.email}
onChangeText={email => this.setState({ email })}/>
答案 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} - 使用这个
仅此而已。享受你的编码...