Я использую react-apollo
для извлечения данных через <Query />
и <Mutation />
.Таким образом, я хочу setState
, когда я получаю некоторые данные.Я получаю данные в методе рендеринга.Вот так:
render() {
return (
<Query query={CAN_UPDATE_POST_QUERY} variables={{ id: this.props.router.query.postId }}>
{ payload => {
if(payload.loading) {
<div style={{width: '98%', textAlign: 'center', maxWidth: '1000px', margin: '50px auto'}}>Loading...</div>
}
if(this.isNew()){
return (
<PleaseSignIn>
{ me => (
...something
) }
</PleaseSignIn>
)
} else if (payload.data && payload.data.canUpdatePost) {
// I get payload here. Here's where I want to set new state.
this.canUpdatePost = payload.data.canUpdatePost
this.setState({ canUpdatePost: this.canUpdatePost })
return (
<PleaseSignIn>
{ me => (
...something
) }
</PleaseSignIn>
)
} else {
return (
<div style={{width: '98%', textAlign: 'center', maxWidth: '1000px', margin: '50px auto'}}>You and your mind seems to be lost. ?</div>
)
}
} }
</Query>
)
}
Использование setState
в рендере дает мне эту ошибку: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.
Как мне мыслить в React?И особенно, как мне изменить свое состояние, когда я получаю полезную нагрузку от react-apollo
?
NEWBIE HERE.Извините, если глупо.
Заранее спасибо.: -)