我的代码是:
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 这是我的第一个例子。 :)
答案 0 :(得分:0)
您必须确保您的阵列存在:
let notes = !!this.state.noteArray && this.state.noteArray.map((val, key)=>{
应该做的工作。 !!是对avoid another typical error.
的双重否定这种方式如果noteArray不存在,那么&amp;&amp;&amp;没有执行。您可以进一步添加安全检查,例如检查它实际上是一个数组等。但是只要您实际拥有一个数组,就可以使用上面的行。