小编Fac*_*eri的帖子

NextJs 在调整大小时传递动态宽度而不是重新渲染

我正在尝试将宽度动态传递给组件的样式。在第一次加载时,没关系,但是如果我调整大小,它永远不会重新呈现组件,即使钩子正在工作。

我读到了,因为 NextJs 是服务器端渲染,这可能会导致这个客户端的问题。所以这是代码:

const useWidth = () => {
  if (process.browser) {
    const [width, setWidth] = useState(window.innerWidth);
    const handleResize = () => setWidth(window.innerWidth);
    useEffect(() => {
      window.addEventListener('resize', handleResize);
      return () => window.removeEventListener('resize', handleResize);
    }, [width]);
    return width;
  }
  return 0;
};
Run Code Online (Sandbox Code Playgroud)

组件(减少只是为了显示示例)

const Login = () => {
  const windowWidth = useWidth();
  const width = windowWidth > CELLPHONE_WIDTH ? '36.6rem' : '90%';
  const loginStyles = styles(width);
  return (
    <div className='container'>
      <TextInput
        type='text'
        width={width}
        placeholder='Email'
      />
    </div>
  ); …
Run Code Online (Sandbox Code Playgroud)

javascript css reactjs next.js react-hooks

2
推荐指数
1
解决办法
3037
查看次数

标签 统计

css ×1

javascript ×1

next.js ×1

react-hooks ×1

reactjs ×1