javascript - 从现有对象数组创建新对象数组时出现引用错误?
问题描述
我有一组图像 url,我正在尝试创建一个应该如下所示的新对象:
source: { uri: 'http://i.imgur.com/XP2BE7q.jpg' }
所以我使用 reduce() 来做到这一点。现在我想要修改后的 imageArray 并为其分配名为 images 的状态变量(它必须是一个数组),但我得到参考错误 imageArray not defined 为什么会这样?
我想将新创建的 imageArray 分配给状态变量,我该怎么做?目前,如果我将reduce()
操作移到类组件之外,我会收到参考错误。
代码:
export default class ImageView extends Component {
constructor(props) {
super(props);
this.state = {
index: 0,
images: imageArray
};
}
render() {
const imageArray = this.props.images.reduce((acc, images) => {
let temp = {
source: {
uri: images
}
};
acc.push(temp);
return acc;
}, []);
console.log(imageArray);
return <View style={{ flex: 1 }} />;
}
}
解决方案
您imageArray
在您的渲染方法内部进行定义,这超出了您的constructor
. 我建议在定义图像数组后调用this.setState({ images: imageArray });
,这不应该在render
方法内部发生。将 state.images 初始化为空数组。在componentDidMount
,减少你的this.props.images
然后调用setState
。
推荐阅读
- scala - 在 Spark 结构化流中计算跨批次的滚动指标的更好方法是什么?
- c - 在 c 中创建和连接套接字:绑定和连接错误
- javascript - 如何将包含单引号的有效 JSON 插入 MySQL
- javascript - 如何从我的初始页面转到带有 HTML 的新 html 页面
- c++ - 模拟静态函数成员
- scala - sbt run 仅在我选择类时才起作用,而不是在我将其作为参数传递时
- python - 从可用数据结构生成二元决策图
- listview - 删除嵌套属性中的元素时更新 SwiftUI 列表
- python - (Python noob)将一串数字添加到列表时,它被分成数字
- flask - 使用线程运行 gunicorn