如何设置从操作到组件

时间:2017-10-16 12:37:45

标签: reactjs react-redux action react-redux-form

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

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 });
}

结束调度会调度,但它跳过中间的代码并完全省略它。

所以第一个前者对我来说看起来更好(如果我理解正确的话)它允许我按顺序返回三个。

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

更新:

这有效:

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 };
}

1 个答案:

答案 0 :(得分:1)

您可以调度动作并在相关的减速器中更改一些道具。 然后在组件中,您可以使用shouldComponentUpdate或componentWillReceiveProps来监听这些道具的更改。

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

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

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