收藏
回答

uniapp vue3 ts 开发 微信小程序怎么使用 Suspense?

自己封装了一个虚拟列表瀑布流,现在兼容h5和APP,但是因为在组件中使用了promise,使用了Suspense标签,导致uniapp编译到微信小程序,无法正常使用,所以想请问有人知道怎么解决这个问题吗?

回答关注问题邀请回答
收藏

1 个回答

  • CRMEB
    CRMEB
    2023-10-19

    可以尝试将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中正常使用了。

    2023-10-19
    有用
    回复
登录 后发表内容