So, I'm trying to set an initial state for an edit component that gets data from the server and now should be editable in the component state. But when I try to do this:
<Query query={POST_QUERY} variables={{ id: this.props.match.params.id }}>
{({ data, loading, error }) => {
this.setState({ title: data.title })
I get stuck in an infinite loop since this is in render. Should I not use the component state with the query component? And if not, what is the alternative?
Whatever component needs this data as state should be rendered inside the
Query
component, and then have the data passed down to it as a prop. For example:You can use the
onCompleted
prop onQuery
component to set the state. See below example:Edit:
As the bug of
onCompleted
firing multiple times has been resolved in the latest version ofreact-apollo
, we can now simply do: