简体   繁体   English

在 ReactJS 中渲染已解决或拒绝的 Promise 值

[英]Render resolved or rejected value of Promise in ReactJS

So, I've got this function fetchData() that returns a promise which is either rejected or resolved.所以,我有这个函数 fetchData() 返回一个被拒绝或解决的承诺。 If promise resolves how can i render it on the page?如果 promise 解决了,我该如何在页面上呈现它?

function Fetchdata() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (Math.random() > 0.5) {
                resolve(`resolved`);
            } else {
                reject(new Error("err"));
            }
        }, time);
    });
}
  • Provide some initial state for each request state为每个请求状态提供一些初始状态
  • Use promise-chain or async/wait with try/catch使用 promise-chain 或 async/wait 和 try/catch
  • Update the render function更新渲染功能

Use the power of the promise chain.使用承诺链的力量。

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>
      );
  }
}

Use async/await in a try/catch/finally in a similar manner以类似的方式在 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
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ReactJS:如果在承诺解决后进行身份验证,则呈现私有路由 - ReactJS: render private route if authenticated after promise resolved 如何暂停渲染直到 promise 已解决? ReactJs - How to pause render till promise has been resolved? ReactJs 在catch函数中,返回了被拒绝的承诺,但是没有解决的承诺? - In catch function a rejected promise is returned but a resolved promise is not? 与摩卡咖啡和蔡测试,看诺言是否已解决或被拒绝 - Test with mocha and chai to see if a promise is resolved or rejected 在Node.js中使用Jasmine 1.3测试承诺是否已解决或被拒绝 - Test if a promise is resolved or rejected with Jasmine 1.3 in Nodejs 等待但从未解决/拒绝承诺内存使用 - Awaited but never resolved/rejected promise memory usage Jest - UnhandledPromiseRejection - Received promise resolved 而不是 rejected - Jest - UnhandledPromiseRejection - Received promise resolved instead of rejected 当Promise状态被拒绝或解决时 - When Promise state become rejected or resolved 测试是否在Nodejs中使用Jasmine解决或拒绝了承诺 - Test if a promise is resolved or rejected with Jasmine in Nodejs 量角器:已解决的承诺仍在被拒绝 - Protractor: Resolved promise is still being rejected
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM