UNPKG

react-app-shell

Version:

react打包脚本和example, 这里的版本请忽略

64 lines (51 loc) 1.75 kB
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;