小编sor*_*old的帖子

React 原生的flushSync替代方案

从 React Native 0.67 更新到 0.69.5 后,我正在重构代码,从而将 React 18 添加到应用程序中。我有一些类似下面的代码,在内部doSomething()使用userInfo。关键是要确保我仅doSomething()在拥有最新版本的 userInfo 时才调用。

useEffect(() => {
   doSomething()
}, [userInfo])

const handleLoginButton = async () => {
   const info = await fetchUserInfo();
   setUserInfo(info);
}
Run Code Online (Sandbox Code Playgroud)

我承认,从最近的讨论来看,这是对 useEffect 的错误使用。所以我想重构为类似的东西

const handleLoginButton = async () => {
    const info = await fetchUserInfo();
    flushSync(() => setUserInfo(info));
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

但是flushSync从 进口的react-dom。我确实知道我可以doSomething(info),但这需要在实际代码中进行更多的重构。有什么方法可以使用react-native而不是实现此目的吗react-dom

javascript reactjs react-native

5
推荐指数
0
解决办法
720
查看次数

标签 统计

javascript ×1

react-native ×1

reactjs ×1