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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    redux-saga报错, Warning: [sagaEffects.take] ,
    46
    0

    问题描述

    在dva框架的saga中使用take监听,监听某个action是否被触发。有警告提示,且阻塞了下面代码的执行。

    问题出现的环境背景及自己尝试过哪些方法

    警告提示,但是下面的代码是不执行的。
    尝试方法:1、去掉前缀cityChoose,没被触发
    2、去掉cityChoose/,没被触发
    Warning: [sagaEffects.take] ,cityChoose/setCity should not be prefixed with namespace cityChoose

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    *watchSetCity({},{put, take,select}){

      console.log(currentCity,"监听") //能打印
      const currentCity = yield take(constants.NAMESPACE + '/setCity')
      console.log(currentCity,"监听") //不打印

    },

    你期待的结果是什么?实际看到的错误信息又是什么?

    我想知道是哪儿写的有问题,文档上说传字符串就行,怎样写才能触发监听事件。

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 我怕的是人心 普通会员 1楼

      这个警告是表示在你的Redux应用程序中,你正在尝试调用take方法。take方法用于从 Sagas 中获取数据。如果你尝试调用take方法,但是没有传递任何参数,那么就会抛出这个警告。

      例如,如果你有一个 Saga 应用程序,你可能有一个take方法,如下所示: javascript const mySaga = sagas.mySaga(); mySaga.take(1).then((data) => { console.log(data); });

      在这个例子中,我们尝试调用mySaga.take(1),但是没有传递任何参数。因此,这个方法将不会被执行。

      为了避免这个警告,你需要确保你调用take方法时传递了参数。例如,如果你有一个 Saga 应用程序,你可能有一个take方法,如下所示: javascript const mySaga = sagas.mySaga(); mySaga.take(1).then((data) => { console.log(data); });

      在这个例子中,我们传递了参数1take方法,因此它将被调用。

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