You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gatsby传递location.state出现Cannot read properties of null报错如何解决

问题根因

用户直接修改URL访问/pageB时,没有通过Link组件触发跳转,此时location.state本身为null,而非location.state.fromPageA为null。你直接读取location.state.fromPageA相当于在null对象上访问属性,因此会抛出对应报错。

修复方案

1. 增加空值防御判断

可以通过可选链操作符或者逐级判断的方式,先校验location.state是否存在再读取内部属性,修改后的useEffect代码如下:

useEffect(() => {
  // 方式1:可选链写法,ES2020+支持
  const isFromPageA = location.state?.fromPageA
  // 方式2:兼容旧环境的逐级判断写法
  // const isFromPageA = location.state && location.state.fromPageA
  console.log(isFromPageA)
  if (!isFromPageA) {
    navigate('/pageA')
  }
}, [location, navigate]);

注意要把location和navigate加入useEffect的依赖数组,避免闭包导致判断逻辑不生效。

2. 兜底默认值兼容

如果需要更稳定的取值逻辑,可以在解构时直接设置默认值,完全避免空值报错:

// location.state为空时会 fallback 到空对象,fromPageA默认值设为false
const { fromPageA = false } = location.state || {}

此时不管location.state是undefined还是null,都能拿到合法的布尔值进行判断。

内容的提问来源于stack exchange,提问作者yangcodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:06:02