账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Ant Design Pro Model的effects里面的方法命名相同,导致无限死循环,这是什么原因?
    49
    0

    两个模型A和B代码都是相同的,如下:

    export default {
      namespace: 'A 或 B ',
      state: {}
    
      effects: { 
        *add({payload},  {call, put}){
            console.log("发起动作")
            yield put({
                type: 'add',
                payload:{
                    payload
                }
            });
        }
      },
      reducers:{
          add(state, action){
            console.log("合并state")
            return state;
          }
      }
    };
    

    用的时候没有同时引入,我在组件调用的时候,会直接死循环打印上面的两个内容。

    如果我不在 effects调用put就不会死循环。
    求各位大佬解答下这个是什么原因,感谢。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 泼熄这一秒 普通会员 1楼

      在Ant Design Pro Model的Effects中,如果你使用了相同的方法名来定义多个效果,可能会导致无限死循环。这是因为Ant Design Pro Model会在创建一个新实例时立即调用每个效果的apply方法。

      解决这个问题的一种方法是在创建Effect实例时,指定使用不同的方法名。例如:

      javascript const effect = AntDesign.Model.default.create({ type: 'list', props: { item: { type: 'list', items: { type: 'list', props: { type: 'text' } } } } });

      这样,你就可以在不同的效果实例中使用不同的方法名。这将避免无限死循环。

      另外,你也可以在创建Effect实例时,指定使用一个唯一的实例标识符。这样,Ant Design Pro Model会将实例标识符与当前的实例关联起来,从而避免无限死循环。例如:

      javascript const effect = AntDesign.Model.default.create({ type: 'list', props: { item: { type: 'list', items: { type: 'list', props: { type: 'text' } } } }, id: 'my-effect' });

      这样,你就可以在不同的实例中使用不同的实例标识符。这将避免无限死循环。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部