开发者社区> 问答> 正文

关于dd.ready()不执行的问题

react点击按钮,通过dd.config()配置之后,调用dd.ready()不执行。如果整个页面刷新可以,但是从子路由A到子路由B(子路由B配置config与ready)就不行。

clickBtn = () => {
    const _this = this
    const {jsApiSignature} = this.props.dingtalkService // jsApiSignature:corpId、nonceStr、signature、timeStamp
    console.log('corpId, jsApiSignature', corpId, jsApiSignature)
    let ccAllList = []
    setDDConfig(jsApiSignature, () => { // 配置dd.config()
        console.log('dd.config back')
        dd.biz.contact.complexPicker({
            title: "抄送",                   // 标题
            corpId: corpId,                 // 企业的corpId
            multiple: true,                 // 是否多选
            limitTips: "超出了人数限制",      // 超过限定人数返回提示
            maxUsers: 1000,                 // 最大可选人数
            pickedUsers,                    // 已选用户
            pickedDepartments,              // 已选部门
            // disabledUsers: [],              // 不可选用户
            // disabledDepartments: [],        // 不可选部门
            requiredUsers: [],              // 必选用户(不可取消选中状态)
            requiredDepartments: [],        // 必选部门(不可取消选中状态)
            appId: getAppId(),              // 微应用的Id
            permissionType: "GLOBAL",       // 选人权限,目前只有GLOBAL这个参数
            responseUserOnly: false,        // true:返回人员信息,false:返回人员和部门信息
            startWithDepartmentId: 0,      // 0表示从企业最上层开始,-1 表示从自己所在部门开始
            onSuccess: function (result) {
                console.log('clickCCPlusBtn result', result)
                /**
                 * departments(id:142530690 name:"业务运维部" number:3)
                 * users(avatar:"" emplId:"290335095623401189" name:"宋汉元")
                 * selectedCount:5
                 */
            },
            onFail: function (err) {
                console.log(err)
            }
        })
    })
}
export const setDDConfig = (jsApiSignature, callback) => {
    dd.config({
        url: getCurrentPath(), // 获取页面url
        agentId: getAppId(), // 必填,微应用ID
        ...jsApiSignature,
        jsApiList: [ // 必填,需要使用的jsapi列表,注意:不要带dd。
            'runtime.info',
            'device.notification.confirm',
            'device.notification.alert',
            'device.notification.prompt',
            'biz.ding.post',
            'biz.util.openLink',
            'biz.contact.choose',
            'biz.contact.complexPicker'
        ]
    })
    console.log('setDDConfig before dd.ready')
    dd.ready(() => {
        console.log('setDDConfig dd.ready')
        callback && callback()
    })
}

如果刷新B页面,点击按钮后输出:

setDDConfig before dd.ready
setDDConfig dd.ready
dd.config back

如果路由从A页面->B页面,点击按钮后输出:

setDDConfig before dd.ready
Uncaught (in promise) Object {errorCode: 3, errorMessage: "Code:52013 - Message:Signature verification failed…**************************************2WAptPsBq8]"}

即dd.ready()没有执行

另外,尝试将dd.config()直接配置在路由B页面中,结果也一样

展开
收起
inil0119 2020-01-07 16:12:03 2715 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载