react-app-shell
Version:
react打包脚本和example, 这里的版本请忽略
64 lines (51 loc) • 1.75 kB
JavaScript
import {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {wechatService} from '../../service';
import {wechatUtils, tools} from '../../utils';
import {appConfig} from '../../config';
/**
* 微信配置组件
* 根据签名, 设置设置微信的JS-SDK, 同时可以设置微信分享
*/
class WechatConfig extends PureComponent {
static propTypes = {
showShare: PropTypes.bool.isRequired, // 是否显示分享功能
shareOptions: PropTypes.object // 分享选项 {title, desc, link, imgUrl, type, dataUrl}
};
static defaultProps = {
account: 'MAIN',
showShare: false,
shareOptions: {}
};
componentDidMount() {
this.initData();
}
/**
* 获取微信签名, 并注入配置, 设置分享信息
*/
initData = async () => {
// 本地开发环境无法设置
if (appConfig.env === 'development' || appConfig.env === 'dev') return;
const {showShare, shareOptions, account} = this.props;
console.log('WechatConfig >>> initData >>> ', shareOptions);
// 非微信浏览器环境, 不配置微信JS-SDK
if (!tools.isWeChat()) return;
const ready = wechatUtils.wechatStatus.ready;
// 未配置过JS-SDK
if (!ready) {
try {
const wechatSign = await wechatService.getWechatSignature(account);
wechatUtils.wechatConfig(wechatSign, showShare, shareOptions);
} catch (error) {
console.error('WechatConfig >> 获取微信签名失败', error);
}
} else {
// 如果IOS系统并且已签名
wechatUtils.configShare(showShare, shareOptions);
}
};
render() {
return null;
}
}
export default WechatConfig;