我想在查询后更新商店(使用Query组件)。与Mutation组件的update属性类似。 Query组件没有" update"支柱。我使用了client.writeData(...)但由于某种原因,存储的值为空。
在下面的代码中,正确显示了Lanes道具,但是当我尝试从本地存储访问processChangeRequests值时,该值为空。
Dashboard.js
<Query
query={GET_ITEMS({ uid: user.uid })}>
{({ loading, data: { GetProcessChangeRequests, processChangeRequests }, data, client }) => {
if (loading) return <Segment> <Icon loading name='spinner' /> Loading items ....</Segment>
if (!loading){
client.writeData({ data: { processChangeRequests: Object.assign([], GetProcessChangeRequests) } })
return (
<Container>
<div>
{ ITEM_TITLE_DICTIONARY[visibilityFilter] }
</div>
<Divider />
<Lanes
user={user}
visibilityFilter={visibilityFilter}
{...this.props} />
</Container>)
}
}}
</Query>
Lanes.js
<Query
query={gql(QUERY_DICTIONARY[visibilityFilter])}>
{({ data, client }) => {
return (<div>
{
JSON.stringify(data.processChangeRequests)
}
</div>)
}}
</Query>
gql(QUERY_DICTIONARY [visibilityFilter])值是
`{
processChangeRequests @client {
summary,
type,
created_by,
created_date,
modified_by,
modified_date,
status,
projekt,
assigned_user_overall_responsibility,
assigned_user_status_im_workflow,
planned_target_date,
description,
implicated,
live_item_id,
related_process,
to_do,
priority,
scope
}
} `
答案 0 :(得分:0)
如果您确实需要在查询后更新商店,那就该去了。
正如您所见here。
我建议您不要从data
两次检索query result
属性。我认为这是问题所在。
如果你这样尝试,你应该得到查询数据
{
({ loading, data, client }) => {
...
if (!loading) {
const {
GetProcessChangeRequests,
processChangeRequests
} = data;
client.writeData({
data: { processChangeRequests: Object.assign([], GetProcessChangeRequests)}
})
...
}
}
&#13;
但我不明白你想尝试什么。