fosho
fosho

Reputation: 127

Updated state not reflecting in dispatch

I'm setting the state of contact then dispatching the state to the store but the state that is dispatched is empty while the state in my component is updated. This is in the callback too so not sure why it's not updated... am I missing something? Thanks everyone.

        if (showForm === true) {
        const {contact} = this.state;
        this.setState({ contact: shipInfo, showForm: !showForm }, () => {
            dispatch(updateContact(contact));
            this.formValidation();
        });
    }

Upvotes: 0

Views: 88

Answers (1)

Seth Lutske
Seth Lutske

Reputation: 10676

You are calling const { contact } = this.state, then using that version of contact to send to the store. But that is not the updated variable. It sounds like what you want to do is send

dispatch(updateContact(shipInfo));

which is what you're updating your variable to become in the next state.

Another way of writing would be:

        this.setState({ contact: shipInfo, showForm: !showForm }, () => {
            const { contact } = this.state;
            dispatch(updateContact(contact));
            this.formValidation();
        });

Now you're grabbing the newer version of state, as you're defining it from within your callback, where state has already been updated.

Upvotes: 1

Related Questions