2017-10-16 48 views
0

我在行动的方法,它与服务器进行交互,并由于方式它的成立:如何从操作设置VAR或函数调用组件

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”是不是即使有这样的操作文件分组的组成部分。这实际上就是它的孩子的行为(但是没关系,如果我至少在最终达到与当前行为相关的组件时必须使用道具来恢复,那么我会这样做,这不是一个真正的问题)

什么让我感到困扰的是,我不知道如何在不使用对服务器的调用(以及来自服务器的响应)的情况下从一个操作回传给组件。

原谅我找不到这个文档。

谢谢!

UPDATE:

我在:

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

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

因此,第一个前者对我来说看起来更好,因为(如果我理解正确),它允许我按顺序有三个退货。

问题是他们拒绝派遣与该设置我不知道为什么。

UPDATE:

这工作:

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

这有什么错只是'Promise.all(承诺)。然后(()=> InterfaceCard.setState({显示隐藏:假}))' - 除了假设你可以设置组件的状态 - 这应该是你自己的状态,并通过'' –

+0

传递它真的有起源于设置我已经循环多个调用的动作必须发生在动作,这就是不是我的电话。 – tatsu

回答

1

你可以派遣一个动作,相关减速改变一些道具。 然后在组件中,您可以使用shouldComponentUpdate或componentWillReceiveProps来监听这些道具的更改。

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

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

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

听起来不错。但我不确定我是否可以在关于不同文件的答案中给出代码示例。 – tatsu

+0

我几乎在那里(在实现你说的),但我不知道如何做一个没有'return'的'dispatch',我不能做到这一点,因为它们有两个,我需要剩下的代码被读取。 – tatsu

+0

'this.dispatch({... types.ALERT});'? – tatsu

相关问题