将位置道具传递给页面会产生构建错误 - 链接组件 - Gatsby

警察

阅读文档我发现 Gatsby 具有内置功能,可以使用道具将道具传递到其链接组件中的页面state在开发环境中,一切都按预期工作,并且从下面的组件导航时,任何页面始终使用传递的道具正确呈现。但是在构建过程中我收到一个错误Building static HTML failed for path "/page/", WebpackError: TypeError: Cannot read property 'access' of undefinedlocation.state该页面内的任何调用都会发生同样的情况

链接组件

const data = { 
  title: "Hello Guys",
  date: "23 November 2020"
}

<Link
  to="/form"
  state={{
    access: true,
    title: data.title,
    date: data.date
  }}
  > Proceed
</Link>

const Page = ( { location } ) => {

 
    if (location.state.access === true) {
    
    return (
        <>
            <div>{location.state.title}</div>
            <div>{location.state.date}</div>
        </>
    )}

    else {
        return <div>Nada</div>
    }           
}

export default Page
费兰·布伊鲁

出现您的问题是因为您没有在所有组件调用中提供location(因此没有提供stateaccess属性),Page因此编译失败。

添加一个条件,例如:

const Page = ( { location } ) => {

 
    if (location && location.state && location.state.access) {
    
    return (
        <>
            <div>{location.state.title}</div>
            <div>{location.state.date}</div>
        </>
    )}

    else {
        return <div>Nada</div>
    }           
}

export default Page

如果您正在使用可选链接提案,您可以:

if (location?.state?.access) {...}

您还可以locationprops解构中的默认设置为

const Page = ( { location = {} } ) => {}

所以,如果你不发送它,它会产生一个空对象 ( {}),所以state里面没有任何属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将链接作为道具传递给 Gatsby Link 时出错

如何使用样式组件将Gatsby链接组件的填充设置为0px

Gatsby组件道具CSS模块

在Gatsby中将位置和pageContext从页面传递到子组件

Gatsby错误:您网站的“ gatsby-node.js”创建了一个页面,并且没有将路径传递给组件

如何将className传递给Gatsby中的图像组件

使用Webpack构建Gatsby组件无法转换Gatsby模块

Gatsby功能组件事件处理传递“ this”

将上下文从 gatsby-node.js 传递到 react 组件(分页/导航链接故障排除)

如何使用gatsby将数据从graphicQL传递到React组件?

gatsby-image 获取组件中未定义的道具

从函数访问Gatsby组件

在 Gatsby.js 中,特定页面上的组件的特定样式

在 React/Gatsby 中突出显示活动页面链接

使用Gatsby链接导航到MDX呈现的页面

在 github 页面上部署后 Gatsby 链接失败

Gatsby插件:如何将组件作为插件选项?

将<script>标签嵌入到React Gatsby组件中

将自定义类/样式传递给 Gatsby (React) 中的样式组件

没有链接组件的情况下如何在gatsby中更改路线?

将“已发送”数据从页面发送到 Gatsby 中的组件

将pageContext数组传递给Gatsby的pageQuery

React 路由器 - 将 api 数据传递给链接的组件以打开新页面

在 Gatsby 中如何排除 gatsby 构建的目录?

Gatsby 开发命令产生错误

反应 | Gatsby:主页组件内部或外部的组件

Gatsby插件错误Gatsby-Source-Wordpress

将功能属性传递给子组件(通过链接和路由组件)

如何根据特定页面有条件地在Gatsby中渲染组件?