Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从存储本身获取在存储上调度的最后一个操作类型?_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 如何从存储本身获取在存储上调度的最后一个操作类型?

Javascript 如何从存储本身获取在存储上调度的最后一个操作类型?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在用Redux架构创建一个处理状态的组件是的,这从定义上来说可能是不好的,因为组件应该将状态委托给应用程序,但无论如何 这个组件接受不同的道具。当我必须处理回叫时,我的问题就来了。让我们用一个实际的例子来更好地描述这一点 假设我们需要一个类似{}}/>的组件 我们可以在组件挂载时创建一个存储,这样所有内部组件都可以分派操作/订阅更改等 该尝试可能是执行一个名为submit的操作。这样,存储将知道有一个更改要应用,所以任何订阅者都会知道,并且有人会调用此onSubmit回调 所以代码看起来像:

我正在用Redux架构创建一个处理状态的组件是的,这从定义上来说可能是不好的,因为组件应该将状态委托给应用程序,但无论如何

这个组件接受不同的道具。当我必须处理回叫时,我的问题就来了。让我们用一个实际的例子来更好地描述这一点

假设我们需要一个类似{}}/>的组件

我们可以在组件挂载时创建一个存储,这样所有内部组件都可以分派操作/订阅更改等

该尝试可能是执行一个名为submit的操作。这样,存储将知道有一个更改要应用,所以任何订阅者都会知道,并且有人会调用此onSubmit回调

所以代码看起来像:

class App extends Component {
  constructor (props) {
     super(props)
     this.subscriber = this.subscriber.bind(this)
  }
  componentWillMount() {
    this.store = createStore()
    this.store.subscribe(this.subscriber)
  }
  subscriber (action) {
    if (action.type === 'submit')
      this.props.onSubmit()
  }
  render () {
    return (
      <Provider store={this.store}>
         <FooComponent />
      </Provider>
    )
  }
}
问题是,尽管订阅服务器在每个调度的操作上都被调用,但订阅服务器无法知道最后调度的操作是什么。所以没有办法知道什么时候打电话给Submit

我们如何使用subscriber了解商店的变化? 我应该停止在这里尝试redux Arquit架构吗?
这是Redux中的反模式

没有“最后一个操作”这样的事情,因为Redux保留在发生多个嵌套调度时只通知您一次的权利

相反,您应该与操作一起执行局部副作用。Redux Thunk是一种流行的方法。如果您需要更多的解耦,您可能会喜欢Redux传奇