this.state.array.map不是函数错误

时间:2019-05-13 13:53:58

标签: javascript reactjs react-native react-redux react-native-android

我已经声明了一个表示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>
    )});

1 个答案:

答案 0 :(得分:0)

我觉得您正在破坏您的阵列。在onChangeText事件处理程序内,您正在设置状态;但是你知道值是多少吗?您可以使用sede_array,不带(this.state)作为前缀。我假设sede_array变量不全局存在,因此当您调用setState()时,它将为this.state.sede_array分配“未定义”。由于setState将触发另一个渲染,因此在该渲染周期它将崩溃,因为this.state.sede_array将是未定义的。您可以通过在onChangeText内的sede_array前面添加this.state.来解决此问题。