javascript - 在组件中生成随机值时的 Next.js/React 警告

标签 javascript reactjs next.js vercel

我正在构建一个 next.js 应用程序,它会生成一些随机数,从而生成警告:

Warning: Text content did not match. Server: "1" Client: "2"

我想我明白为什么会收到此警告(虚拟 DOM 与服务器发送的内容有点不同步)。我只是想知道是否有办法让 next.js/React 知道在这种情况下这是可以的。或者有没有办法只在服务器上生成随机数并让客户端将其用作文字?

或者我应该忽略警告?

最佳答案

将 JavaScript 随机变量移动到 React 状态为我解决了这个问题。

这是我之前的问题(简化):

function RandomNumber() {
  const randomNumber = Math.floor(Math.random() * 100);
  return <p>{randomNumber}</p>;
}

之后

function RandomNumber() {
  const [randomNumber, setRandomNumber] = useState(undefined);

  useEffect(() => {
    setRandomNumber(Math.floor(Math.random() * 100));
  }, []);

  return <p>{randomNumber}</p>;
}

我的代码使用了 React Hooks useStateuseEffect,但之前的 React 生命周期方法 setStatecomponentDidMount 应该可以工作也不错

关于javascript - 在组件中生成随机值时的 Next.js/React 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47539922/

相关文章:

javascript - 访问对象数组中的值

javascript - 如何在 TypeScript 中使用导航器和位置 DOM 变量

javascript - array.map() 在 React JS 中一起返回元素

html - 如何在使用 React JS 和 Styled-Css 时覆盖用户代理样式

reactjs - Next.js:减少数据获取并在页面之间共享数据

javascript - 创建日期对象并与今天的日期进行比较

Javascript - 无法获得要警报的数组的平均值

javascript - JQuery Hide() 在按钮中使用时不隐藏元素

javascript - 下一个 JS - ReferenceError : document is not defined

javascript - d3.js 如何向条形图添加线条