我需要一个click函数,以便通过助焊剂动作来更新存储,还需要更新组件的状态。

例:
我有一个表单字段,其中包含故事的数据,还有一个状态,用于说明表单的模式是否已打开。

// Initial state
return {
    story: this.props.story,
    modalIsOpen: true
}


-

// Click function to close the modal
closeModal: function(e){
    e.preventDefault();
    story.update(newStory)  // <== Flux action to update the story, which then updates this component
    this.setState({modalIsOpen: false})  // <== To actually close the modal
}


但是,无论我把什么放在首位,似乎都没有。因此,如果我先拥有story.update(newStory),它将执行该命令,而不执行this.setState({modalIsOpen: false})
反之亦然...

有任何想法我在做什么错或如何执行两者吗?

最佳答案

this.setState()之后,您不需要story.update()
可能是在执行动作调用之后,在执行this.setState()之前重新渲染了组件。
流程应为:


您的组件调用story.update()
商店监听调度程序并进行更新
商店发出变化
您的组件倾听变化
组件内部响应存储更新的方法setState( {modalIsOpen: false} )


同样,您的story似乎不需要处于状态:您的组件可以简单地呈现this.props.story

关于javascript - react setState和通量 Action 更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37004843/

10-08 23:20