我有一个React Native App,它在componentWillMount()
上调用了一个函数来将所有内容保存在该列表中。
var list = []
const getMatchList = (logKey) => {
global.socket.emit("getMatches", logKey, (data) => {
//adding to list logic
})
console.log("Matches Loaded");
}
class MatchesScreen extends React.Component {
async componentWillMount() {
logKey = await getPreferences("logKey");
await getMatchList(logKey)
}
componentDidMount() {
console.log(list);
}
}
当我访问该屏幕时,它首先显示空白列表,然后显示消息“已加载匹配”。我如何首先加载比赛?
谢谢。
答案 0 :(得分:0)
我似乎希望await
会将您的异步功能转换为同步功能,但事实并非如此。您的componentWillMount 将在呈现之前被调用,但是由于它异步加载数据,并且由于react将不会等待promise解析,因此该页面将不显示任何数据,并且只要有数据就将在以后重新呈现
这需要更多的上下文才能有一个好的答案,但是您至少有以下选择: