小程序
小游戏
企业微信
微信支付
扫描小程序码分享
自己封装了一个虚拟列表瀑布流,现在兼容h5和APP,但是因为在组件中使用了promise,使用了Suspense标签,导致uniapp编译到微信小程序,无法正常使用,所以想请问有人知道怎么解决这个问题吗?
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
可以尝试将Promise替换为async/await,这样可以避免Suspense标签的使用。具体操作如下:
1. 在组件中使用async/await替换Promise。例如,如果你的代码是这样的:
componentDidMount() { this.fetchData().then(data => { this.setState({ data }); }); }
可以修改为:
2. 在需要等待数据的地方使用await关键字。例如,如果你的代码是这样的:
async componentDidMount() { const data = await this.fetchData(); this.setState({ data }); }
3. 在需要等待数据的地方使用async函数。例如,如果你的代码是这样的:
componentDidMount() { async function fetchDataAndSetState() { const data = await this.fetchData(); this.setState({ data }); } fetchDataAndSetState(); }
通过以上修改,你的组件应该可以在uniapp中正常使用了。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
可以尝试将Promise替换为async/await,这样可以避免Suspense标签的使用。具体操作如下:
1. 在组件中使用async/await替换Promise。例如,如果你的代码是这样的:
componentDidMount() { this.fetchData().then(data => { this.setState({ data }); }); }
可以修改为:
componentDidMount() { this.fetchData().then(data => { this.setState({ data }); }); }
2. 在需要等待数据的地方使用await关键字。例如,如果你的代码是这样的:
async componentDidMount() { const data = await this.fetchData(); this.setState({ data }); }
3. 在需要等待数据的地方使用async函数。例如,如果你的代码是这样的:
componentDidMount() { this.fetchData().then(data => { this.setState({ data }); }); }
可以修改为:
componentDidMount() { async function fetchDataAndSetState() { const data = await this.fetchData(); this.setState({ data }); } fetchDataAndSetState(); }
通过以上修改,你的组件应该可以在uniapp中正常使用了。