1 回答
TA贡献2012条经验 获得超12个赞
你需要传递身份证。我在下面重构了您的帖子内容
const getArticle = gql`
query getArticle($id: ID!) {
article (id: $id) {
id
coverImg {
id
url
}
title
updated_at
content
user{
name
}
tags
}
}
`;
const Post = ({articleId}) =>
{
const { data, error, loading } = useQuery( getArticle, { variables: { id } } );
if ( loading )
{
return <Load/>;
}
if ( error )
{
return <div>
<Err/>
Error! { error.message }</div>;
}
return (
<main className={s.post}>
<Nav />
<CoverImg title={data.article.title} url={data.article.coverImg.url}/>
<Tags />
<Body content={data.article.content}/>
<Sidebar />
<Footer />
</main>
);
};
export default () => <Post />;
注意id 属性和查询名称前面的美元符号。
query getArticle($id: ID!) {
article (id: $id) {
还要注意变量选项
useQuery(getArticle, { variables: { id: articleId } });
还要注意articleId正在使用的道具。为此,您需要更改文章列表组件,如下所示:
<Post
type='post'
key={ article.id }
articleId={ article.id }
coverImg={ article.coverImg.url }
title={ article.title
date={ article.date }
name={ article.user.name }
excerpt={ article.excerpt }
/>
注意:React 不通过key属性,所以不能在组件内部使用
添加回答
举报