带有 Nextjs 动态导入的 react-odometerjs 不会滚动数字

react-odometerjs with Nextjs dynamic imports doesn't scroll numbers

我在 Nextjs 中使用 react-odometerjs。 正如文档所建议的:

import dynamic from 'next/dynamic'

const Odometer = dynamic(import('react-odometerjs'), {

  ssr: false,

  loading: () => <p>0</p>,

})


const App: FC = () => {
const [odometerValue, setOdometerValue] = useState<number>(0)

useEffect(() => {
    const Millisecond = 20000

    setOdometerValue(300)

    setInterval(function () {
      setOdometerValue(300)
    }, Millisecond)

    // }

  }, [])

return  <Odometer value={odometerValue} format='(,ddd)' animation='count' duration={1000} />

我使用动态导入来导入它,但是这样当数字改变时数字不会动画和滚动。 我注意到,如果我在没有动态导入的情况下导入它,当我收到错误“文档未定义”时,我可以在下一次渲染之前看到数字动画。

还有其他人遇到这个问题吗?

如果有人对 better/different 解决方案或包有建议,请分享。 我搜索了很多,但找不到好的选择。

问题不在于动态导入,而在于 useEffect.

中的代码

尝试更新它以匹配以下内容:

useEffect(() => {
    setOdometerValue(300);
    const interval = setInterval(() => {
      setOdometerValue((value) => value + 300);
    }, 20000);
    return () => clearInterval(interval);
}, []);

当使用 setTimeoutsetIntervaladdEvenListenerwindow 方法时,您想要 return 来自 useEffect 的清理函数等等