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页面中,结果也一样
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。