【发布时间】:2019-05-27 02:19:01
【问题描述】:
编辑:这个问题最初是关于在 CodeSandbox 环境中使用 React 钩子时出现类型错误,但我已经对其进行了更新,以便对未来的访问者有用。
我正在使用以下代码尝试创建一个钩子,以使用滚动位置为网站标题的高度设置动画。问题是我尝试了各种方法来阻止它在服务器上出错,但不断收到各种错误(尽管检查了窗口对象的存在)。
我的原始问题中有一些示例代码,我更新了以下代码沙箱。
https://codesandbox.io/s/p5y6262qzm
原始问题:
未处理的拒绝(TypeError):Object(…) 不是函数
首先我知道这个标题还有其他问题,但似乎有多种原因,我找不到涵盖我的特殊情况的答案。
我可以用来生成示例的最简单(不完整)代码是这样的......
import React, { useState, useEffect } from "react";
const useScrollPosition = () => {
// Store the state
const [scrollPos, setScrollPos] = useState(window.pageYOffset);
return scrollPos;
};
export default useScrollPosition;
虽然有一个更完整的示例说明我在此代码框中尝试做的事情:
https://codesandbox.io/s/p5y6262qzm
我猜这很简单,我似乎无法理解它。
【问题讨论】:
-
这里的问题是 React 不是最新的。它应该是 16.7 alpha。您可以检查
React.version是 16.5.2。我希望useState会导致undefined is not a function,我不能说为什么它会说Object(...)。无论如何,问题在于代码和框 Next.js 模板。 -
啊,当然。我没有想到,因为我的项目有正确的版本,当我遇到这个时,我正在使用代码沙箱制作一个演示来说明一个未连接的问题。你想把它转换成正确的答案还是你认为我应该删除这个问题?
-
嗯,实际上这似乎仍然不起作用。我添加了两个不同版本的 alpha ,观看了 NPM 并两次刷新了页面。
-
考虑更新问题,使其更适合您当前的问题。我试图解决它。
标签: javascript reactjs next.js react-hooks