React native 将对象添加到数组并刷新截面列表
我添加了一个新的联系人对象,并试图在SectionList中显示它。但当我试图将一个对象放入数组时,我得到了一个错误:TypeError:undefined不是一个对象(计算'n.data.length') 我使用此链接中的说明来解决问题。React native 将对象添加到数组并刷新截面列表,react-native,react-native-sectionlist,React Native,React Native Sectionlist,我添加了一个新的联系人对象,并试图在SectionList中显示它。但当我试图将一个对象放入数组时,我得到了一个错误:TypeError:undefined不是一个对象(计算'n.data.length') 我使用此链接中的说明来解决问题。 {item} /> 我认为问题在于错误的箭头函数语法。试试这个 this.setState(state => { return {contacts: [...state.contacts, newContact]}; }); 您没有正确使用
{item}
/>
我认为问题在于错误的箭头函数语法。试试这个
this.setState(state => {
return {contacts: [...state.contacts, newContact]};
});
您没有正确使用链接的解决方案。缺少包装支架
this.setState(state => ({
contacts: [...state.contacts, newContact]
}));
我想你可以穿短一点
this.setState({ contacts: [...this.state.contacts, newContact] });
我想补充一点
this.refreshContactsList = this.refreshContactsList.bind(this);
不需要,因为
refreshContactList
是一个箭头函数,并且您不会丢失内部的该
指针。如果您将其声明为refreshContactList(){…}
您需要绑定此
最后我找到了正确的语法:
refreshContactsList = () => {
const newContact = {data: [{name:this.state.contactName, phone:this.state.contactPhone}]};
this.setState({ contacts: [...this.state.contacts, newContact]})
}
当=>符号后面有一个大括号时,它会将其视为函数体,而不是将其作为对象返回。谢谢您的回复。但是现在我得到一个错误:TypeError:undefined不是一个对象(计算'n.data.length')。我想我不需要归还任何东西,因为设置状态正在进行工作。你是对的,我已经更正了。但是现在我得到一个错误:TypeError:undefined不是一个对象(评估'n.data.length')你能在
setState
之前记录this.state.contacts
吗?请删除newContact
属性名的单引号():)我想我的问题是contacts声明。我对this.state.contacts(console.log对我不起作用)发出了警报,它重新启动了我的应用程序(我正在使用expo)。在this.setState({contacts:[…this.state.contacts,newContact]})中放置新联系人时出现问题
因为contacts是objects的数组ice:)所以这是一件需要添加数据属性的事情?
this.setState({ contacts: [...this.state.contacts, newContact] });
this.refreshContactsList = this.refreshContactsList.bind(this);
refreshContactsList = () => {
const newContact = {data: [{name:this.state.contactName, phone:this.state.contactPhone}]};
this.setState({ contacts: [...this.state.contacts, newContact]})
}