在Node.js中出现`window not defined'错误
我知道Node.js中并不存在window
,但是我在客户端和服务器上都使用了React和相同的代码。 任何我用来检查window
存在的方法nets me:
未捕获的ReferenceError:未定义窗口
我如何解决这个事实,我不能做window && window.scroll(0, 0)
?
Sawtaytoes已经得到它。 我将运行componentDidMount()中的任何代码并将其包围:
if (typeof(window) !== 'undefined') { // code here }
如果在React渲染组件的时候,窗口对象还没有被创build,那么在组件渲染之后,你可以经常运行你的代码(而且窗口对象肯定是在那个时候创build的),所以用户不能分辨其中的不同之处。
if (typeof(window) !== 'undefined') { var timer = setTimeout(function() { // code here }, 200); }
我build议不要在setTimeout中放置状态。
这将为您解决这个问题:
typeof(window) === 'undefined'
即使未定义variables,也可以使用typeof()
进行检查。
这种代码甚至不应该在服务器上运行,它应该在一些componentDidMount
( 参见doc )钩子里面,它只能调用客户端。 这是因为滚动窗口服务器端没有意义。
但是,如果您必须在真正运行客户端和服务器的部分代码中引用窗口,请使用global
(代表全局范围 – 例如客户端上的window
)。
<Router onUpdate={() => window.scrollTo(0, 0)} history= {browserHistory}>
如果您需要在React JS应用程序的顶部打开新页面,请在router.js中使用此代码