如何设置从操作到组件的 var 或函数调用

How to set var or function call from action to component

我的操作中有一个与服务器交互的方法,并且由于它的设置方式:

function generateDoc(specs) {
    // Gen start !
    InterfaceCard.setState({ showhide: true });
    // loop :
    const promises = [];
    specs.forEach((spec) => {
        if (spec) promises.push(generateChain(spec));
    });
    // gen end!
    InterfaceCard.setState({ showhide: false });
}

可以让我开始和结束我的文档生成。

我想在 // Gen start !// gen end! 上发出组件可以接收的调用或 var 修改。

(显然我现在的 InterfaceCard.setState({ showhide: false }); 不工作。)

"InterfaceCard" 甚至不是与此操作文件分组的组件。这实际上是它的子动作(但没关系。如果我必须使用道具让我在至少最终到达与当前动作关联的组件后返回,那么我会的,这不是真正的问题.)

让我感到困扰的是,我不知道如何在不使用对服务器的调用(和来自服务器的响应)的情况下从操作返回到组件。

请原谅我没有找到这方面的文档。

谢谢!

更新:

我在:

function generateDoc(specs) {
    show();
    const promises = [];
    specs.forEach((spec) => {
        if (spec) promises.push(generateChain(spec));
    });
    hide();
}

function show() {
    const pay = true;
    return dispatch => dispatch({ ...types.ALERT, pay });
}

function hide() {
    const pay = true;
    return dispatch => dispatch({ ...types.ALERTN, pay });
}

这些不发货。但如果我这样做:

function generateDoc(specs) {
    const promises = [];
    specs.forEach((spec) => {
        if (spec) promises.push(generateChain(spec));
    });
    const pay = true;
    return dispatch => dispatch({ ...types.ALERTN, pay });
}

end dispatch 确实是 dispatch 但它跳过了中间的代码并完全省略了它。

所以第一个前者对我来说看起来更好,因为(如果我理解正确的话)它允许我依次拥有三个 returns。

问题是他们拒绝使用该设置发送我不知道为什么。

更新:

这有效:

function generateDoc(specs) {
    const promises = [];
    specs.forEach((spec) => {
        if (spec) promises.push(generateChain(spec));
    });
    return (dispatch) => {
        setTimeout(() => {
            dispatch(show());
        }, 1);
        setTimeout(() => {
            dispatch(hide());
        }, 9000);
    };
}

function show() {
    const pay = true;
    return { ...types.ALERT, pay };
}

function hide() {
    const pay = true;
    return { ...types.ALERTN, pay };
}

你可以调度一个动作,并在相关的减速器中改变一些道具。 然后在你的组件中,你可以通过 shouldComponentUpdate 或 componentWillReceiveProps 监听这些 props 的变化。

function show() {
  return { ...types.ALERT, pay }
}

function hide() {
  return { ...types.ALERTN, pay }
}

function generateDoc(specs) {
  return dispatch => {
    dispatch(show());
    dispatch(hide());
  }    
}