Как добавить функцию обратного вызова в вызов действия

Я совершенно не знаком с react-redux. здесь я использую thunk. Теперь, У меня есть следующий сценарий, когда

this.props.removeTech({ newArr, removeType });

Я вызываю это действие из своего компонента,

export function removeTech(data) {
    return (dispatch) => {
        dispatch({
            type: REMOVE_TECH,
            data: data,
        });
    }
}

и он обновляет состояние,

Но

Я делаю,

this.props.removeTech({ newArr, removeType });
    let validateData = this.validate(removeType, noc);
    console.log("removing data",validateData);
    this.setState({
      showError: validateData
    })

Таким образом, validateData нужны некоторые данные, которые следует обновить, но он получает предыдущие данные и из-за этого не возвращает правильное значение. Так,

Я хочу вызвать эту функцию после обновления состояния. Так может ли кто-нибудь мне с этим помочь?

0
0
383
2

Ответы 2

Если validate является асинхронной функцией, используйте Promise и вызовите setState в then. Если validate - это другое действие, возможно, это его работа по обновлению showError в состоянии.

И для вашей информации, вам не нужен thunk для removeTech, вы можете просто сделать:

export const removeTech = data => ({ type: REMOVE_TECH, data, });

Вы можете вернуть обещание для своего действия removeTech, а затем использовать метод then() для this.props.removeTech.

Что-то вроде этого:

export function removeTech(data) {
    return (dispatch) => {
        dispatch({
            type: REMOVE_TECH,
            data: data,
        });
        return Promise.resolve();
    }
}

А потом

this.props.removeTech({ newArr, removeType }).then(() => {
    let validateData = this.validate(removeType, noc);
    console.log("removing data",validateData);
    this.setState({
      showError: validateData
    })
});

Надеюсь это поможет :)

Другие вопросы по теме