React useIsomporphicEffect钩子

在服务器端解析为useEffect(),在客户端解析为useLayoutEffect()

  • 使用typeof来检查Window对象是否已定义。如果已定义,则返回useLayoutEffect()。否则返回useEffect()
const useIsomorphicEffect =
  typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;

const MyApp = () => {
  useIsomorphicEffect(() => {
    window.console.log('Hello');
  }, []);

  return null;
};

ReactDOM.createRoot(document.getElementById('root')).render(
  <MyApp />
);