小程序
小游戏
企业微信
微信支付
扫描小程序码分享
mpvue开发的小程序使用ononShareTimeline自定义标题和图片不生效,还是采用的默认名称和图片
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
手动修改一下mpvue这个包,在node_modules里面找到mpvue
在index里面,搜索下onShareAppMessage找到 // 用户点击右上角分享 onShareAppMessage: rootVueVM.$options.onShareAppMessage ? function (options) { return callHook$1(rootVueVM, 'onShareAppMessage', options); } : null, z在这一段代码下面添加一个处理就可以了 // 分享朋友圈 onShareTimeline: rootVueVM.$options.onShareTimeline ? function (options) { return callHook$1(rootVueVM, 'onShareTimeline', options); } : null,
最好也在LIFECYCLE_HOOKS这个数组中把onShareTimeline这个添加进去 var LIFECYCLE_HOOKS = [ 'beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'beforeDestroy', 'destroyed', 'activated', 'deactivated', 'onLaunch', 'onLoad', 'onShow', 'onReady', 'onHide', 'onUnload', 'onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onShareTimeline', 'onPageScroll', 'onTabItemTap', 'attached', 'ready', 'moved', 'detached' ]; 然后打包,完美解决 如果项目中因为页面问题引入了例如mpvue-factory这种插件的还需要处理一下,用下面这个文件去处理吧,两个问题一起处理。 再高级一点的话,可以写一个fix命令,复制我下面的,放到build文件夹,检查下你们的相对路径是不是对的,不对的话改一下你们的文件目录指向,然后自己去package里面加命令执行这个文件,直接命令跑一下就可以 var chalk = require('chalk') var path = require('path') var fs = require('fs') var data = '' var dataFactory = '' const hookConfig = '\'onShareAppMessage\',' const hookFn = '// 用户点击右上角分享\n' + ' onShareAppMessage: rootVueVM.$options.onShareAppMessage\n' + ' ? function (options) { return callHook$1(rootVueVM, \'onShareAppMessage\', options); } : null,' const mpVueSrc = '../node_modules/mpvue/index.js' const mpVueFactorySrc = '../node_modules/mpvue-page-factory/index.js' const factoryHook = 'onShareAppMessage: App.onShareAppMessage ?\n' + ' function (options) {\n' + ' var rootVueVM = getRootVueVm(this);\n' + ' return callHook$1(rootVueVM, \'onShareAppMessage\', options);\n' + ' } : null,' try { data = fs.readFileSync(path.join(__dirname, mpVueSrc), 'utf-8') if (data.indexOf('onShareTimeline') === -1) { data = replaceHook(data) } fs.writeFileSync(path.join(__dirname, mpVueSrc), data) } catch (e) { console.error(e) } try { dataFactory = fs.readFileSync(path.join(__dirname, mpVueFactorySrc), 'utf-8') if (dataFactory.indexOf('onShareTimeline') === -1) { dataFactory = replaceFactoryHook(dataFactory) } fs.writeFileSync(path.join(__dirname, mpVueFactorySrc), dataFactory) } catch (e) { console.error(e) } // 处理mpvue框架中没有处理onShareTimeline方法的问题 function replaceHook(str) { let res = str.replace(hookConfig, '\'onShareAppMessage\',\n' + ' \'onShareTimeline\',') res = res.replace(hookFn, '// 用户点击右上角分享\n' + ' onShareAppMessage: rootVueVM.$options.onShareAppMessage\n' + ' ? function (options) { return callHook$1(rootVueVM, \'onShareAppMessage\', options); } : null,\n' + '\n' + ' // 分享朋友圈\n' + ' onShareTimeline: rootVueVM.$options.onShareTimeline\n' + ' ? function (options) { return callHook$1(rootVueVM, \'onShareTimeline\', options); } : null,') return res } // 处理mpvue-factory插件中没有处理onShareTimeline方法的问题 function replaceFactoryHook(str) { let res = str.replace(factoryHook, 'onShareAppMessage: App.onShareAppMessage ?\n' + ' function (options) {\n' + ' var rootVueVM = getRootVueVm(this);\n' + ' return callHook$1(rootVueVM, \'onShareAppMessage\', options);\n' + ' } : null,\n' + '\n' + ' // 用户点击右上角分享\n' + ' onShareTimeline: App.onShareTimeline ?\n' + ' function (options) {\n' + ' var rootVueVM = getRootVueVm(this);\n' + ' return callHook$1(rootVueVM, \'onShareTimeline\', options);\n' + ' } : null,') return res } console.log(chalk.green( ' Tip: fix mpvue_share Success!' ))
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
使用第三方框架(mpvue、taro、uniapp)都会这样,需要等框架作者更新支持!
使用原生写法则不会出现这个问题了。
wepy 项目框架 分享朋友圈 只能全部是默认的标题跟图标 自定义的显示不出来
留名,解决了麻烦告知一下
同样问题,mpvue还没有人更新了。留名,解决了我再来
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
手动修改一下mpvue这个包,在node_modules里面找到mpvue
在index里面,搜索下onShareAppMessage找到 // 用户点击右上角分享 onShareAppMessage: rootVueVM.$options.onShareAppMessage ? function (options) { return callHook$1(rootVueVM, 'onShareAppMessage', options); } : null, z在这一段代码下面添加一个处理就可以了 // 分享朋友圈 onShareTimeline: rootVueVM.$options.onShareTimeline ? function (options) { return callHook$1(rootVueVM, 'onShareTimeline', options); } : null,
最好也在LIFECYCLE_HOOKS这个数组中把onShareTimeline这个添加进去 var LIFECYCLE_HOOKS = [ 'beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'beforeDestroy', 'destroyed', 'activated', 'deactivated', 'onLaunch', 'onLoad', 'onShow', 'onReady', 'onHide', 'onUnload', 'onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onShareTimeline', 'onPageScroll', 'onTabItemTap', 'attached', 'ready', 'moved', 'detached' ]; 然后打包,完美解决 如果项目中因为页面问题引入了例如mpvue-factory这种插件的还需要处理一下,用下面这个文件去处理吧,两个问题一起处理。 再高级一点的话,可以写一个fix命令,复制我下面的,放到build文件夹,检查下你们的相对路径是不是对的,不对的话改一下你们的文件目录指向,然后自己去package里面加命令执行这个文件,直接命令跑一下就可以 var chalk = require('chalk') var path = require('path') var fs = require('fs') var data = '' var dataFactory = '' const hookConfig = '\'onShareAppMessage\',' const hookFn = '// 用户点击右上角分享\n' + ' onShareAppMessage: rootVueVM.$options.onShareAppMessage\n' + ' ? function (options) { return callHook$1(rootVueVM, \'onShareAppMessage\', options); } : null,' const mpVueSrc = '../node_modules/mpvue/index.js' const mpVueFactorySrc = '../node_modules/mpvue-page-factory/index.js' const factoryHook = 'onShareAppMessage: App.onShareAppMessage ?\n' + ' function (options) {\n' + ' var rootVueVM = getRootVueVm(this);\n' + ' return callHook$1(rootVueVM, \'onShareAppMessage\', options);\n' + ' } : null,' try { data = fs.readFileSync(path.join(__dirname, mpVueSrc), 'utf-8') if (data.indexOf('onShareTimeline') === -1) { data = replaceHook(data) } fs.writeFileSync(path.join(__dirname, mpVueSrc), data) } catch (e) { console.error(e) } try { dataFactory = fs.readFileSync(path.join(__dirname, mpVueFactorySrc), 'utf-8') if (dataFactory.indexOf('onShareTimeline') === -1) { dataFactory = replaceFactoryHook(dataFactory) } fs.writeFileSync(path.join(__dirname, mpVueFactorySrc), dataFactory) } catch (e) { console.error(e) } // 处理mpvue框架中没有处理onShareTimeline方法的问题 function replaceHook(str) { let res = str.replace(hookConfig, '\'onShareAppMessage\',\n' + ' \'onShareTimeline\',') res = res.replace(hookFn, '// 用户点击右上角分享\n' + ' onShareAppMessage: rootVueVM.$options.onShareAppMessage\n' + ' ? function (options) { return callHook$1(rootVueVM, \'onShareAppMessage\', options); } : null,\n' + '\n' + ' // 分享朋友圈\n' + ' onShareTimeline: rootVueVM.$options.onShareTimeline\n' + ' ? function (options) { return callHook$1(rootVueVM, \'onShareTimeline\', options); } : null,') return res } // 处理mpvue-factory插件中没有处理onShareTimeline方法的问题 function replaceFactoryHook(str) { let res = str.replace(factoryHook, 'onShareAppMessage: App.onShareAppMessage ?\n' + ' function (options) {\n' + ' var rootVueVM = getRootVueVm(this);\n' + ' return callHook$1(rootVueVM, \'onShareAppMessage\', options);\n' + ' } : null,\n' + '\n' + ' // 用户点击右上角分享\n' + ' onShareTimeline: App.onShareTimeline ?\n' + ' function (options) {\n' + ' var rootVueVM = getRootVueVm(this);\n' + ' return callHook$1(rootVueVM, \'onShareTimeline\', options);\n' + ' } : null,') return res } console.log(chalk.green( ' Tip: fix mpvue_share Success!' ))
使用第三方框架(mpvue、taro、uniapp)都会这样,需要等框架作者更新支持!
使用原生写法则不会出现这个问题了。
wepy 项目框架 分享朋友圈 只能全部是默认的标题跟图标 自定义的显示不出来
留名,解决了麻烦告知一下
同样问题,mpvue还没有人更新了。留名,解决了我再来