如何在动作调用中添加回调函数

时间:2018-10-31 10:37:30

标签: javascript reactjs redux react-redux

我对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需要一些应该更新的数据,但是它获取了以前的数据,因此它没有返回正确的值。因此,

我想要的是我想在状态更新后调用该函数。那么,有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

如果validate是异步函数,请使用Promise并在setState中调用then。 如果validate是另一个动作,也许更新状态showError是他的工作。

对于您的信息,您不需要thunk来使用removeTech,只需执行以下操作即可:

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

答案 1 :(得分:0)

您可以对操作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
    })
});

希望这会有所帮助:)