小编Les*_*els的帖子

为什么这个使用await/act/async的官方React测试配方实际上有效?

我使用 Javascript 已经有几年了,根据我目前对事件循环的了解,我正在努力理解为什么React 文档中的这个测试方法有效。有人能够准确地分解每一步发生的情况吗?对我来说,这在测试中起作用似乎很神奇:

await act(async () => {
  render(<User id="123" />, container);
});

// expect something
Run Code Online (Sandbox Code Playgroud)

该组件如下所示(复制以防链接被弃用):

function User(props) {
  const [user, setUser] = useState(null);

  async function fetchUserData(id) {
    const response = await fetch("/" + id);
    setUser(await response.json());
  }

  useEffect(() => {
    fetchUserData(props.id);
  }, [props.id]);

  if (!user) {
    return "loading...";
  }

  return (
    <details>
      <summary>{user.name}</summary>
      <strong>{user.age}</strong> years old
      <br />
      lives in {user.address}
    </details>
  );
}
Run Code Online (Sandbox Code Playgroud)

渲染上没有隐式或显式返回发生,那么 act 如何知道等待组件中发生的异步内容(获取等)?

对我来说,这更有意义:

await act(async () => render(<User id="123" />, …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous async-await reactjs

8
推荐指数
1
解决办法
1521
查看次数

标签 统计

async-await ×1

asynchronous ×1

javascript ×1

reactjs ×1