Javascript 如何使用setState回调更新TextInput的值属性
我是一个新的反应和尝试建立动态的形式。它似乎工作得很好。问题是,当我键入字段值时,它们会显示在屏幕上,但Textinput的value属性仍然为空。我试图探索所有选项,最终归结为setState的async。由于我是新手,我不知道如何创建一个回调函数来填充动态表单字段的value属性 我没有包含所有的代码,只是我认为与避免负担相关的代码 谢谢 萨尔Javascript 如何使用setState回调更新TextInput的值属性,javascript,reactjs,react-native,react-redux,react-native-android,Javascript,Reactjs,React Native,React Redux,React Native Android,我是一个新的反应和尝试建立动态的形式。它似乎工作得很好。问题是,当我键入字段值时,它们会显示在屏幕上,但Textinput的value属性仍然为空。我试图探索所有选项,最终归结为setState的async。由于我是新手,我不知道如何创建一个回调函数来填充动态表单字段的value属性 我没有包含所有的代码,只是我认为与避免负担相关的代码 谢谢 萨尔 类应用程序扩展了React.Component{ 建造师(道具){ 超级(道具); 此.state={ 输入阵列:[], 查看数据:{ id:0,
类应用程序扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
输入阵列:[],
查看数据:{
id:0,
数据:空
},
步骤:0,
总计项目:[],
项目:
{
id:0,
电子邮件:空,
密码:null,
地址:空
}
}
};
///onCHANGE函数
输入值1=(e)=>{
e、 坚持();
让item={…this.state.item};
item.Email=e.target.value;
this.setState({item:item});
输入值2=(e)=>{
e、 坚持();
让item={…this.state.item};
item.Password=e.target.value;
this.setState({item:item});
输入值3=(e)=>{
e、 坚持();
让item={…this.state.item};
项目地址=e.target.value;
this.setState({item:item});
//动态形式
输入=()=>{
返回(
)
};
//渲染方法
render(){
返回(
{this.state.InputArray.map((项,索引)=>(
//使用高光,因为它不会将其效果传递给子对象,所以不透明度会
this.viewPress(索引)}>
this.viewPress(索引)}>
{item.data}
{this.state.step==0?
:
此。删除(索引)}/>
}
))
}
);
}
}
用扩展运算符替换所有函数,而不是直接赋给对象。尝试此操作并检查
EnterValue1 = (e) => {
e.persist();
this.setState({
item: {
...this.state.item,
Email: e.target.value,
}
});
}
注意:您的整个代码可能对调试您的问题有很大帮助,以防万一。这可能不是最好的解决方案。因为这是我在react native的第一个项目 虽然我无法使用this.state获取prop的值,但它们仍然为null。对于我的动态表单,我创建了一个包含Views/textinput的函数,该函数带有一个索引参数,由我的map函数提供(该函数迭代长度等于添加的表单数的数组)。我使用onChageText方法,在setState中使用回调将类型化的值保存在一个id为的对象中,该id需要与我的动态映射表单的索引等效。使用数组对象的索引,values=this.state.object[index],values以动态形式保存
它仍然没有填充values prop,但在我添加新表单时,它确实在上一个表单的前端保留了键入的内容。我没有看到您调用“输入”函数来呈现TextInput的任意位置!你把它叫做哪里?谢谢,我还没有粘贴完整的代码。我在另一个函数中调用它,来推动表单。我没有包括在这里。抱歉搞混了,谢谢。我试过了。它没有改变价值属性,我希望它能改变。
EnterValue3 = (e) => {
e.persist();
let item = { };
this.setState({ item: {...this.state.item, address: e.target.value });
}
EnterValue1 = (e) => {
e.persist();
this.setState({
item: {
...this.state.item,
Email: e.target.value,
}
});
}