查询后更新Apollo商店(不是突变)

时间:2018-05-23 16:27:04

标签: reactjs graphql apollo apollo-client

我想在查询后更新商店(使用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
}

} `

1 个答案:

答案 0 :(得分:0)

如果您确实需要在查询后更新商店,那就该去了。

正如您所见here

我建议您不要从data两次检索query result属性。我认为这是问题所在。

如果你这样尝试,你应该得到查询数据

&#13;
&#13;
{
  ({ loading, data, client }) => {

    ...

    if (!loading) {
      const {
        GetProcessChangeRequests,
        processChangeRequests
      } = data;
      
      client.writeData({
          data: { processChangeRequests: Object.assign([], GetProcessChangeRequests)}
      })

      ...

    }
  }
&#13;
&#13;
&#13;

但我不明白你想尝试什么。