javascript - React - Apollo Client,如何将查询结果添加到状态

标签 javascript reactjs graphql react-apollo apollo-client

我创建了一个由 Apollo 客户端和 graphQL 驱动的 React 应用程序。
我的架构已定义,因此预期结果是一个对象数组 ([{name:"metric 1", type:"type A"},{name:"metric 2", type:"type B"}] )

在我的 jsx 文件中,我定义了以下查询:

query metrics($id: String!) {
  metrics(id: $id) {
    type
    name
  }
}`;

我像这样用 Apollo HOC 包装了组件:

export default graphql(metricsQuery, {
  options: (ownProps) => {
    return {
      variables: {id: ownProps.id}
    }
  }
})(MetricsComp);

Apollo 客户端工作正常,并在 render 方法中返回预期的 props 列表。


我想让用户在客户端上操作结果(编辑/删除列表中的一个指标,对实际数据没有突变需要服务器)。然而,由于结果在组件 Prop 上,我必须将它们移动到状态以便能够变异。如何在不导致无限循环的情况下将结果移动到状态?

最佳答案

如果 apollo 在这件事上像中继一样工作,你可以尝试使用 componentWillReceiveProps:

class ... extends Component {

  componentWillReceiveProps({ metrics }) {
    if(metrics) {
      this.setState({
        metrics,
      })
    }  
  }
}

像这样。

关于javascript - React - Apollo Client,如何将查询结果添加到状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48788677/

相关文章:

javascript - 可滚动表排序 - 如何抑制水平滚动位置平移的伪影,以保持滚动位置?

javascript - 从 JSX 函数返回数组并在其他地方解构它

node.js - 如何替换在 docker 容器内运行的 react js 应用程序的品牌资源( Logo 、背景图像)

graphql - 使用中继现代 graphql 添加突变

java - 如何为GraphQLObjectType的GraphQLList定义Relay片段?

javascript - react-native-webview 如何注入(inject) javascript?

javascript - 如何在javascript中的if中将OR切换为AND

javascript - 首先返回函数的一部分,然后执行其余部分

jquery - 使用react.js 进行简单的ajax 请求

reactjs - 使用 GraphQL 或 GraphQL 端点生成 schema.json