小程序wx.showActionSheet 调起转发、分享

wx.showActionSheet() 方法中无法调取转发功能。
因为转发必须是 button 按钮 设置open-type="share", 会调取page.onShareAppMessage()。

自定义action-sheet

<!-- 定义一个action-sheet, 通过hidden控制显示隐藏。 -->
<action-sheet hidden="{{state.actionSheetHidden}}" bindchange="actionSheetChange"> 

  <!-- action-sheet-item 是每个 item -->
  <action-sheet-item class="item" data-id="{{state.itemData.shop_id}}">
      <button open-type="share">{{state.actionSheetItems[0]}}
      </button>
  </action-sheet-item>

  <action-sheet-item bindtap="showShareImageModal">{{state.actionSheetItems[1]}}</action-sheet-item>

  <!-- action-sheet-cancel 是取消按钮。 -->
  <action-sheet-cancel>取消</action-sheet-cancel>
</action-sheet>

或者通过map进行控制。

.xml

<!-- actionSheetItems: [{bindTap: ‘Menu1‘, text: "发给微信好友"}, {bindTap: ‘Menu2‘, text: "生成分享图片"}]; -->

<action-sheet hidden="{{state.actionSheetHidden}}" bindchange="actionSheetChange">
  <!-- 自定义 转发按钮 -->
  <action-sheet-item class="item">
    <button open-type="share">{{state.actionSheetItems[0].text}}</button>
  </action-sheet-item>

  <!-- 剩下的item -->
  <block wx:for-items="{{state.actionSheetItems}}">
    <action-sheet-item bindtap="actionSheet{{item.bindTap}}" wx:if="{{index !== 0}}">{{item.text}}</action-sheet-item>
  </block>

  <!--取消按钮-->
  <action-sheet-cancel>取消</action-sheet-cancel>
</action-sheet>

.js

// 右上角分享按钮, 点击弹出弹窗,选择发给微信好友 或 生成分享图片。
var shareModeData = [{bindTap: ‘Menu1‘, text: "发给微信好友"}, {bindTap: ‘Menu2‘, text: "生成分享图片"}];
constructor(props) {
  super(props);
  this.state = {
    actionSheetHidden: true, // 控制分享弹窗modal
    actionSheetItems: shareModeData, // 弹窗展示数据
  }
}
onShareAppMessage() {
  let share_url = ‘/pages/index/index‘
  let imageUrl = ‘https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=1650310964,3049609459&fm=173&app=25&f=JPEG?w=439&h=401&s=17B056855A6786CC443835B90300C001‘
  return {
    title: ‘我发现了一个不错的商品,快来看看吧!~~‘
    path: share_url,
    imageUrl: imageUrl,
    success: (res) => {
      // 转发成功
      console.log("分享成功", res)
    },
    fail: (err) => {
      // 转发失败
      console.log("分享失败", err)
    }
  }
}
// 显示分享弹窗。
showShareModal(e) {
  this.setState({
    actionSheetHidden: !this.state.actionSheetHidden
  });
}
// 改变 action-sheet状态。
actionSheetChange(e) {
  this.setState({
    actionSheetHidden: !this.state.actionSheetHidden
  });
}
// 分享弹窗 中item bindTap对应的方法。
actionSheetMenu2() {
  this.showShareImageModal();
}

使用的labrador 框架
所以js中用的不是this.setDate, 而是this.setState。
xml 中取page中的数据不是直接 {{variable}}, 而是{{state.variable}}。

原文地址:https://www.cnblogs.com/VinsonH/p/9459386.html

时间: 2024-10-17 19:02:41

小程序wx.showActionSheet 调起转发、分享的相关文章

微信应用号小程序wx.sendSocketMessage(OBJECT)

微信应用号小程序wx.sendSocketMessage(OBJECT) wx.sendSocketMessage(OBJECT) ? 通过WebSocket连接发送数据,需要先wx.connectSocket,并在wx.onSocketOpen回调之后才能发送. OBJECT参数说明: 参数 类型 必填 说明 data String 是 需要发送的内容 示例代码: var socketOpen = false; var socketMsgQueue = [] wx.connectSocket(

微信应用号小程序wx.onSocketOpen(CALLBACK)

微信应用号小程序wx.onSocketOpen(CALLBACK) wx.onSocketOpen(CALLBACK) ? 监听WebSocket连接打开事件 示例代码: wx.connectSocket({ url:"qkxue.net" }); wx.onSocketOpen(function(res){ console.log("WebSocket连接已打开!") })稿源:勤快学QKXue.NET

微信应用号小程序wx.onSocketError(CALLBACK)

微信应用号小程序wx.onSocketError(CALLBACK) wx.onSocketError(CALLBACK) ? 监听WebSocket错误 示例代码: wx.connectSocket({ url:"qkxue.net" }); wx.onSocketOpen(function(res){ console.log("WebSocket连接已打开!") }) wx.onSocketError(function(res){ console.log(&qu

微信小程序 wx:key详细介绍

转自:http://www.jb51.net/article/95980.htm 微信小程序 wx:key 在自己学习的时候不是多明白到底是怎么回事,经过上网查阅资料,整理下: 个人感觉官方给出的例 子不是很明确,官方解释如下: wx:key 如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容,<switch/> 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符. wx:key

***小程序wx.getUserInfo不能弹出授权窗口后的解决方案

微信更新api后,wx.getUserInfo在开发和体验版本都不能弹出授权窗口.微信文档说明: 注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type="getUserInfo"></button> 引导用户主动进行授权操作 当用户未授权过,调用该接口将直接报错 当用户授权过,可以使用该接口获取用户信息 对此,给出以下解决方案. wx.getUserInfo({ withCredentials: true, success

微信小程序wx.request接口

微信小程序wx.request接口 wx.request是小程序客户端与服务器端交互的接口 HTTPS 请求 一个微信小程序,只能同时(同时不能大于5个)有5个网络请求 wx.request(OBJECT) 发起网络请求 url data header method dataType wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'applicat

监控微信小程序wx.request请求失败

在微信小程序里,与后台服务器交互的主要接口函数是wx.request(),用于发起 HTTPS 网络请求.其重要性不言而喻.然而,却经常遇到请求失败的问题,笔者特意谷歌"wx.request 请求失败",可以搜索到很多相关的文章,下面列出一些: wx.request 失败| 微信开放社区 微信小程序 wx.request 请求失败- SegmentFault 思否 小程序部分机型小程序用户无法发起 wx.request 请求,网络错误问题 ... wx.request()失败,requ

微信小程序wx.getLocation()获取经纬度及JavaScript SDK调用腾讯地图API获取某一类地址

简介 腾讯位置服务为微信小程序提供了基础的标点能力.线和圆的绘制接口等地图组件和位置展示.地图选点等地图API位置服务能力支持,使得开发者可以自由地实现自己的微信小程序产品. 在此基础上,腾讯位置服务微信小程序JavaScript SDK是专为小程序开发者提供的LBS数据服务工具包,可以在小程序中调用腾讯位置服务的POI检索.关键词输入提示.地址解析.逆地址解析.行政区划和距离计算等数据服务,让您的小程序更强大! 有时候我们在做微信小程序时有些功能需要获取当前的地理位置及附近地点的一些要求,但是

微信小程序wx:key以及wx:key=&quot; *this&quot;详解:

今天写微信小程序无意中看到控制台给出了这样一行提示: 求解百度才知道,给大家分享一下: 1.wx:for定义 官方文档:在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件. 默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item 人话:根据已有数据来迭代生成组件的一个方法.学前端的同学肯定不会陌生了,V-for.ng-repeat都是一样的原理,可是在这里为什么会报错呢,往下看 2.wx:key定义 官方文档:如果列表中项目的位置