如何在 gatsby 的布局文件中获取路径名

IT技术 javascript reactjs react-router gatsby
2021-05-04 01:44:46

我正在使用gasby,这里的主文件始终layout.js是它们的父文件既然它是一个父文件,那么我怎样才能this.props.location.pathname在其中获得位置props

这是我的布局组件

class Layout extends Component {
  componentWillMount() {
    console.log(this.props, 'dssssssssssssf')
  }

  render() {
    const { children } = this.props
    return(
      <StaticQuery
        query={graphql`
          query SiteTitleQuery {
            site {
              siteMetadata {
                title
              }
            }
          }
        `}
        render={data => (
          <>
            <div>
              <Provider store={store}>
                {children}
              </Provider>
            </div>
          </>
        )}
      />
    )
  }
}
Layout.propTypes = {
  children: PropTypes.node.isRequired
}

export default Layout.
1个回答

正如 Gatsby 文档中所述:

在 v1 中,布局组件可以访问历史记录、位置和匹配props。在 v2 中,只有页面可以访问这些 props;如果您在布局组件中需要这些props,请从页面传递它们。

这意味着你需要去你的 Layout 组件被渲染的地方,通常是 index.js 或 app.js 页面,并将位置props直接传递给它:

import React from "react"
import Layout from "../components/layout"

export default props => (
  <Layout location={props.location}>
    <div>Hello World</div>
  </Layout>
)

然后你可以在你的布局中使用它。您还可以在此处阅读更多内容