我正在尝试从DynamoDB中提取一些数据,将其存储在本地状态中,然后对其进行操作。我可以提取数据,但我认为我可能需要处理异步内容,因此我使用了async await。
async componentDidMount() {
//aws secret key stuff here
const ddb = new AWS.DynamoDB({ apiVersion: '2012-10-08' });
const res = await ddb.scan(params, (err, data) => {
if (err) {
console.log(err, err.stack);
} else {
console.log(data);
}
});
this.setState({ products: data })
}
我有几个问题。基本上,我想等到扫描完成后才能设置状态,以确保数据已成功提取,然后我可以设置状态。
首先,语法检查器提醒我不应在componentDidMount中设置状态,那么我应该在哪里设置呢?
其次,等待某些请求完成后再使用数据的正确方法是什么?
我在
this.setState({products:data})
处做了一个console.log(data)
,并记录了正确的信息。但是当我尝试这样迭代我的数据时:
{this.state.products.Items.map((product) => (
我收到了"无法读取未定义的地图"的错误信息?
.length
,所以现在我正在使用它,但是我得到了“无法获取未定义的长度”的错误。因为我认为在第一次渲染时它是未定义的,所以在尝试验证时会出错? - The Walrus