【发布时间】:2017-04-29 02:31:55
【问题描述】:
我目前正在使用以下方法将我的数组映射到 setState,但没有设置任何内容,也没有记录任何错误。如果我逐行明确地写出来,它就可以工作。关于如何解决这个问题有什么想法或建议吗?
用数组设置状态:(不设置状态)
const myData = ['message', 'photo', 'isLoggedInhoto'];
const newData = [];
{[...Array(myData.length)].map((x, index) =>
newData.push(myData[index])
)}
this.setState({
newData: localStorage.getItem(newData),
})
逐行(这有效并且确实 setState):
this.setState({
message: localStorage.getItem('message'),
photo: localStorage.getItem('photo'),
isLoggedIn: localStorage.getItem('isLoggedIn')
})
【问题讨论】:
-
这里有很多问题。
getItem接受一个字符串,而不是一个对象。您还没有将 newData 设置为 localStorage。你还想完成什么?您可以使用 myData.slice() 或 es6 中的 [...myData] 克隆数组 -
我明白了。您的目标是根据名称使用来自本地存储的一组项目来设置状态
-
数据正在构造函数中设置...问题,是的。因此问题
标签: javascript arrays reactjs ecmascript-6 state