Подписка на GraphQL не обновляется должным образом в React - PullRequest
1 голос
/ 08 июня 2019

Я создаю веб-сайт для перечисления событий с возможностью создавать, обновлять и удалять события.Я использую подписку в своем компоненте для подключения к синхронизации приложений AWS, но обновление не работает должным образом.

Когда я подписываюсь на изменения, я обновляю свой список событий в моем состоянии, а затем отображаю события из состояния.Компонент появляется для нового события, но не заполняет его никакими данными.Он появляется сразу, и мне интересно, не дожидается ли его заполнения база данных?

// / и место отображения событий

render(){
        return(

            <Connect id="connect" 
                subscription={graphqlOperation(subscriptions.onCreateEvent)}
                onSubscriptionMsg={(prev, newEvent) => {
                    const events = [...this.state.events, newEvent]
                    this.setState({events:events});
                    return prev;
                    }
                 }

                query={graphqlOperation(listEvents)}>       
                {({ data: { listEvents }, loading, error }) => {
                    if (error) return (<h3>Error</h3>);
                    if (loading || !listEvents) return (<h3>Loading...</h3>);
                    return (
                        <div id="eventloader">
                            {this.displayEvents()}
                        </div>
                    );
                }}
            </Connect>

        );
    }

// функция для отображения событий

displayEvents () {
        return this.state.events.map((event, i) => (
            <Col md={4} key={i}>
                <Event 
                    openModal={this.openModal}
                    admin={false}
                    id={event.id}
                    title={event.name} 
                    date={event.date}
                    description={event.description} />
            </Col>
            )

Спасибо за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...