我正在尝试将 setState() 设置为我从 graphQL 获得的查询结果,但我很难找到如何执行此操作,因为它将始终加载,或者仅从 props 中使用。我先设置状态
constructor (props) {
super(props);
this.state = { data: [] };
然后我有这个查询
const AllParams = gql`
query AllParamsQuery {
params {
id,
param,
input
}
}`
当它回来时,我可以访问它 this.props.AllParamsQuery.params
如果 this.setState({ data: this.props.AllParamsQuery.params })
没有它, 我应该如何以及何时返回{data: undefined}
?
我还没有找到一种方法让它等待,而它又是undefined
AKA loading: true
then setState
。我试过componentDidMount()
并componentWillReceiveProps()
包括一个async function(){...await...}
但没有成功,我可能做错了。有谁知道如何正确地做到这一点或有一个例子?
编辑 + 答案:您不应该设置状态而将其留在props中。查看此链接:“为什么在 react.js 中将props设置为状态是亵渎” http://johnnyji.me/react/2015/06/26/why-setting-props-as-state-in-react-is- blasphemy.html 更新props的问题还有很多,但在这个应用程序创建教程中可以找到一些很好的例子:https : //www.howtographql.com/react-apollo/8-subscriptions/