在 ReactJS 中呈现已解决或已拒绝的 Promise 值

Render resolved or rejected value of Promise in ReactJS

所以,我得到了这个函数 fetchData() returns 一个要么被拒绝要么被解决的承诺。如果 promise 解决了我如何在页面上呈现它?

function Fetchdata() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (Math.random() > 0.5) {
                resolve(`resolved`);
            } else {
                reject(new Error("err"));
            }
        }, time);
    });
}
  • 为每个请求状态提供一些初始状态
  • 使用 promise-chain 或 async/wait 与 try/catch
  • 更新渲染函数

使用承诺链的力量。

class App extends React.Component {
   state = {
     data: null,
     error: null,
     loading: true;
   };

   componentDidMount() {
      fetchData()
        .then(data => {
          // promise resolved
          // handle happy path, update state.data
        })
        .catch(err => {
          // promise rejected
          // handle sad path, update state.error
        })
        .finally(() => {
          // promise is settled
          // set loading false
        });
   }
     
   render() {
      const { data, error, loading } = this.state;

      if (loading) {
        <div>Loading...<.div>;
      }

      return (
          <div>
              <h1></h1>
              {error && <div>Error</div>}
              {data && <div>{data}</div>
          </div>
      );
  }
}

在 try/catch/finally 中以类似的方式使用 async/await

async componentDidMount() {
  try {
    const data = await fetchData();
    // promise resolved
    // handle happy path, update state.data
  } catch(err) {
    // promise rejected
    // handle sad path, update state.error
  } finally {
    // promise is settled
    // set loading false
  }
}