无法使用对象数组设置状态
Unable to setState with array of objects
我正在尝试在组件加载时设置一个包含对象数组的空数组的状态。
我尝试过新的 ES6 语法,我尝试过映射、连接等,但无法正常工作。
我尝试插入(而不是推送)到我的状态的数组的控制台输出看起来是正确的。
mapped arrayObj : [{"word":"teacher","correct":true,"image":"/Assets/Art/Icons/teacher.png"},{"word":"backpack","correct":false,"image":"/Assets/Art/Icons/backpack.png"},{"word":"paper","correct":false,"image":"/Assets/Art/Icons/paper.jpg"}]
这是我映射对象数组然后尝试设置空 answersObj 的状态的函数。
mapArray(){
const arrayObj = this.state.data.answers.map(obj => obj);
let shuffledObjArray = [{}];
shuffledObjArray = this.shuffleArray(arrayObj)
this.setState({
answersObj: shuffledObjArray
})
return shuffledObjArray;
}
我在加载组件时调用 mapArray 函数
componentDidMount() {
this.mapArray();
}
不要忘记 setState 是异步函数,因此状态不会立即设置。
例如,这段代码对我有用:
async componentDidMount() {
await this.mapArray();
console.log(this.state)
}
obj 状态获取它需要的值,而 w/o async/await 它将打印空状态。
因此,如果您需要从该状态呈现数据,我建议将 'dataLoaded' 设置为 bool 并仅在数据加载完成后才呈现数据。
我正在尝试在组件加载时设置一个包含对象数组的空数组的状态。
我尝试过新的 ES6 语法,我尝试过映射、连接等,但无法正常工作。
我尝试插入(而不是推送)到我的状态的数组的控制台输出看起来是正确的。
mapped arrayObj : [{"word":"teacher","correct":true,"image":"/Assets/Art/Icons/teacher.png"},{"word":"backpack","correct":false,"image":"/Assets/Art/Icons/backpack.png"},{"word":"paper","correct":false,"image":"/Assets/Art/Icons/paper.jpg"}]
这是我映射对象数组然后尝试设置空 answersObj 的状态的函数。
mapArray(){
const arrayObj = this.state.data.answers.map(obj => obj);
let shuffledObjArray = [{}];
shuffledObjArray = this.shuffleArray(arrayObj)
this.setState({
answersObj: shuffledObjArray
})
return shuffledObjArray;
}
我在加载组件时调用 mapArray 函数
componentDidMount() {
this.mapArray();
}
不要忘记 setState 是异步函数,因此状态不会立即设置。
例如,这段代码对我有用:
async componentDidMount() {
await this.mapArray();
console.log(this.state)
}
obj 状态获取它需要的值,而 w/o async/await 它将打印空状态。
因此,如果您需要从该状态呈现数据,我建议将 'dataLoaded' 设置为 bool 并仅在数据加载完成后才呈现数据。