undefined不是对象 - >反应原生JS

时间:2018-05-27 23:57:15

标签: react-native

我的代码是:

import Note from './Note';

export default class Main extends React.Component {

constructor(props) {
    super(props);
    this.state = {
        noteArray: [],
        noteText: '',
    }
}

render() {
    let notes = this.state.noteArray.map((val, key)=>{
        return <Note key={key} keyval={key} val={val}
                     deleteMethod={()=>this.deleteNote(key)}></Note>
    });

    return (
        <View style={styles.container}>
            <View style={styles.header}>
                <Text style={styles.headerText}>Yapılacaklar Listesi</Text>
            </View>

            <ScrollView style={styles.scrollContainer}>
                {notes}
            </ScrollView>

            <View style={styles.footer}>
                <TextInput
                    style={styles.textInput}
                    placeholder='Notunuz...'
                    placeholderTextColor='white'
                    underlineColorAndroid='transparent'
                    onChangeText={(noteText)=> this.setState({noteText})}
                    value={this.state.noteText}>
                </TextInput>
            </View>
            <TouchableOpacity onPress={ this.addNote.bind(this) } style={styles.addButton} >
                <Text style={styles.addButtonText}>+</Text>
            </TouchableOpacity>
        </View>
    );


}
addNote()
{
 if (this.state.noteText){
     var d=new Date;
     this.state.noteArray.push({
        'date':d.getFullYear()
        +'/'+(d.getMonth()+1)
        +'/'+d.getDate()
     });
     this.setState({ noteArray: this.state.NoteArray })
     this.setState({ noteText: '' })
 }
}
}

我的错误是:undefined不是对象(评估'this.state.noteArray.map')

我该如何解决这个问题?

我开始学习反应。错误的屏幕是 Error Screen 这是我的第一个例子。 :)

1 个答案:

答案 0 :(得分:0)

您必须确保您的阵列存在:

let notes = !!this.state.noteArray && this.state.noteArray.map((val, key)=>{

应该做的工作。  !!是对avoid another typical error.

的双重否定

这种方式如果noteArray不存在,那么&amp;&amp;&amp;没有执行。您可以进一步添加安全检查,例如检查它实际上是一个数组等。但是只要您实际拥有一个数组,就可以使用上面的行。