gpt4 book ai didi

javascript - 将参数从 React-router 传递到 Apollo Client 2.1 中的查询组件

转载 作者:行者123 更新时间:2023-11-29 23:24:13 25 4
gpt4 key购买 nike

如何将路由中的 match.params 传递给新的 Apollo 查询组件?我正在尝试在 Apollo 2.1 之前构建一个 React 组件,并使用新的查询组件来学习如何使用它们。

我之前的代码:

const Post = ({ data: { loading, error, post } }) => {
if (error) return <h1>Error fetching the post!</h1>
if (!loading) {
return (
<article>
<h1>{post.title}</h1>
<div className='Post-placeholder'>
<img
alt={post.title}
src={`https://media.graphcms.com/resize=w:650,h:366,fit:crop/${post.coverImage.handle}`}
/>
</div>
<Markdown
source={post.content}
escapeHtml={false}
/>
</article>
)
}
return <h2>Loading post...</h2>
}

export const singlePost = gql`
query singlePost($slug: String!) {
post: Post(slug: $slug) {
id slug title
coverImage { handle }
content dateAndTime
} }`

export default graphql(singlePost, {
options: ({ match }) => ({
variables: {
slug: match.params.slug
}
})
})(Post)

这是新代码:

const Post = (slug) => (
<Query query={singlePost} variables={{slug: slug.match.params.slug}}>
{({ loading, error, post }) => {
if (loading || !post) return <h2>Loading post...</h2>
if (error) return <h1>Error fetching the post!</h1>
return (
<article>
<h1>{post.title}</h1>
<div className='Post-placeholder'>
<img
alt={post.title}
src={`https://media.graphcms.com/resize=w:650,h:366,fit:crop/${post.coverImage.handle}`}
/>
</div>
<Markdown
source={post.content}
escapeHtml={false}
/>
</article>
)
}}
</Query>
)

export const singlePost = gql`
query singlePost($slug: String!) {
post: Post(slug: $slug) {
id slug title
coverImage { handle }
content dateAndTime
} }`

export default Post;

我 console.log post 得到一个空对象,我 console.log slug.match.params.slug 我得到 React 传递的帖子的 slug -路由器。控制台中也没有错误,我先是加载屏幕,然后是黑页。 Apollo Dev 工具还显示缓存中查询的数据。

最佳答案

我觉得render回调中应该是data,而不是post

  <Query query={singlePost} variables={{slug: slug.match.params.slug}}>
{({ loading, error, data /* <=== This one */ }) => {
console.log(data.post); // I think your post will be in data.post

关于javascript - 将参数从 React-router 传递到 Apollo Client 2.1 中的查询组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49765770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com