Normal Action监听

在实际使用场景中,经常会出现调用一个Action方法,需要更改多个reducer的情况。在框架中也有相关的解决方案。

  1. // SecondModel.ts
  2. import { Model, Effects } from '@redux-model/web';
  3. import { firstModel } from './FirstModel';
  4.  
  5. interface Data {
  6. online: boolean;
  7. }
  8.  
  9. class SecondModel extends Model<Data> {
  10. // 监听其他模型的Action
  11. protected effects(): Effects<Data> {
  12. return [
  13. firstModel.increase.onSuccess((state) => {
  14. state.online = !state.online;
  15. }),
  16. // 更多effect可以继续添加
  17. ];
  18. }
  19.  
  20. protected initReducer(): Data {
  21. return {
  22. online: false,
  23. };
  24. }
  25. }
  26.  
  27. export const secondModel = new SecondModel();

我们使用effects()方法监听其他模型的Action的调用,并同步更改当前模型的reducer数据。

  1. console.log(secondModel.data.online) // online === false
  2.  
  3. firstModel.increase(); // online === true
  4. firstModel.increase(); // online === false
  5. firstModel.increase(); // online === true