我已经声明了一个表示TextInput字段的对象数组。现在,我想在输入中添加onChangeText的值,但是当我尝试在输入中写一些东西时,我得到了错误:“ this.state.sede_array不是函数”。我做了数组的console.log,我看到只有输入的第一个字母被添加到value属性,然后引发错误。请帮助找出正在发生的事情。
export default class Form extends Component {
constructor(props) {
super(props);
this.state = {
sede_array:[
{id:1, value:null},
{id:2, value:null},
{id:3, value:null},
]
};
}
render() {
console.log(this.state.sede_array)
let sede_list= this.state.sede_array.map((val, key) => {
return(
<View key={key}>
<Text style={styles.titolo}>Indirizzo Sede
{this.state.sede_array[key].id}</Text>
<TextInput style={styles.input}
onChangeText={value => {
sede_array[key].value = value;
this.setState({sede_array})
}}
/>
</View>
)});
答案 0 :(得分:0)
我觉得您正在破坏您的阵列。在onChangeText事件处理程序内,您正在设置状态;但是你知道值是多少吗?您可以使用sede_array
,不带(this.state)作为前缀。我假设sede_array变量不全局存在,因此当您调用setState()时,它将为this.state.sede_array分配“未定义”。由于setState将触发另一个渲染,因此在该渲染周期它将崩溃,因为this.state.sede_array将是未定义的。您可以通过在onChangeText内的sede_array前面添加this.state.
来解决此问题。