【发布时间】:2019-04-24 08:28:50
【问题描述】:
我有一个组件,我想获取配置文件的数据并允许在同一视图上发布消息。我在这里创建了一个简单的配置文件组件,并在查询中设置了突变,类似于the Apollo React tutorial。
当我运行它时,我会得到一个带有数据的正确呈现的查询。按下按钮时,会发生突变,但页面会在 Query 的 data 参数中使用空对象重新呈现,并且页面会出现 Cannot read property 'name' of undefined 错误(在给定空白 data 对象的情况下,这是预期的) .
这里有更好的方法吗?
const GET_PROFILE = gql`
query GetProfileQuery($profileId: ID!) {
getProfileInfo(profileId: $profileId) {
name
}
}
`;
const ADD_ENDORSEMENT = gql`
mutation AddEndorsement($profileId: ID!, $body: String!) {
addEndorsement(profileId: $profileId, body: $body) {
endorsementId
}
}
`;
const Profile = props => {
const profileId = props.match.params.profileId;
return (
<Query query={GET_PROFILE} variables={{ profileId: profileId }}>
{({ loading, error, data }) => {
if (loading) return <p>Loading...</p>;
if (error) return <p>Error :(</p>;
return (
<Fragment>
<h1>Welcome {data.getProfileInfo.name}</h1>
<Mutation mutation={ADD_ENDORSEMENT}>
{(addEndorsement, { loading, error }) => (
<div>
<button
onClick={e => {
addEndorsement({
variables: {
profileId: profileId,
body: "This is a test."
}
});
}}
>
Save
</button>
{loading && <p>Loading...</p>}
{error && <p>Error :(</p>}
</div>
)}
</Mutation>
</Fragment>
);
}}
</Query>
);
};
【问题讨论】:
标签: reactjs graphql react-apollo apollo-client