hooks更新数组永远是长度为1的数组,不会递增


export default function Dev() {
  const [reqList, setReqList] = useState([]);
  useEffect(() => {
    chrome.devtools.network.onRequestFinished.addListener(async (...args) => {
      log(args);
      try {
        const [
          {
            // 请求的类型,查询参数,以及url
            request: { method, queryString, url },

            // 该方法可用于获取响应体
            response,
            time,
            timing,
            startedDateTime,
            getContent,
          },
        ] = args;

        log(method, response, queryString, url);

        // 将callback转为await promise
        // warn: content在getContent回调函数中,而不是getContent的返回值
        const content = await new Promise((res, rej) => getContent(res));
        // log(content);
        log(reqList);
        setReqList([
          {
            method: method,
            start: new Date(startedDateTime).toLocaleTimeString(),
            url: url,
            receive: 999,
            wait: 999,
            all: time,
            code: response.status,
            words: 'someWords',
            user: '某某',
            mocker: '某某',
          },
          ...reqList,
        ]);
      } catch (err) {
        log(err.stack || err.toString());
      }
    });
  }, []);
  return (
    <>
      <AppBar />
      <div className="d-flex">
        <div className="left">
          <RequestTable rows={reqList} rowClick={() => {}} />
        </div>
        <div className="right"></div>
      </div>
    </>
  );
}

如上面代码所示,传给RequestTable组件的rows这个props永远是长度为的数组?怎么理解

阅读 1.9k
2 个回答

Promise被resolve了么

useEffect 依赖没依赖 reqList

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题