微信小程序--实现分享功能

2023-10-31

  本篇文章的目标是实现分享小程序中的单张页面给其他用户,并且打开分享后的页面拥有返回按钮.

  最终的效果:

 

                                                            

 

 

1. 封装一个分享的组件

<view class='share'>
   <view class='like'>
      <view class='iconfont icon-aixin'></view>
   </view>
   <view class='weixin'>
       <button open-type="share" class='iconfont icon-weixin'></button>
   </view>
</view>

页面效果如下:

                                            

说明:

   如果想在页面上实现点击按钮分享,那么这个点击的按钮必须使用button标签,并且open-type置为share

 

2.在想要分享的页面中引入上面组件,并在页面的js中Page所包含的对象里增加一个方法onShareAppMessage

 

Page({

  /**
   * 页面的初始数据
   */
  data: {
   news_id:12
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
   
    
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

    let url = encodeURIComponent('/packageNews/pages/news_detail/news_detail?news_id=' + this.data.news_id);

    return {
      title: "热点详情",
      path:`/pages/index/index?url=${url}` 
    }

  }
})

 说明:

  将当前页面的路径包括参数使用encodeURIComponent进行编码并作为url的参数,path设置为小程序的首页.当我们将该页面

分享给其他人时,他们打开的首先是首页,然后跳转到我们分享的这个页面.

 

3.要想分享后的页面打开先进入首页再跳转到分享的页面,首页的js要做如下设置

 

//index.js
Page({
  data: {
  
  },
  onLoad: function (options) {


    if(options.url){

      let url = decodeURIComponent(options.url);

      wx.navigateTo({
        url
      })

    }

  }

})

说明:

  在onLoad的方法中先判断有没有url参数,如果有的话就使用decodeURIComponent对url解码然后跳转.由于小程序是先进入了首页然后跳转到分享页,这样便解决了分享页没有返回键的问题.

 

结尾

很多同学私信反馈小程序分享完毕之后,打开页面没有数据.最后总结了有以下原因:

1. 分享按钮一定要使用button标签,并且open-type置为share

2.被分享的那个页面请求后台接口的参数,可能是从上一个页面传递过来的.

例如分享某个新闻详情给好友.它的底层原理就是,好友打开小程序,小程序启动后先进入首页,拿到跳转地址再跳到新闻详情页.而平时我们访问新闻详情页需要带着一个新闻id的,没有id就无法知道当前访问哪个新闻.由于分享后是直接从首页跳到详情页,没有新闻id,自然是无法获取到新闻数据.

所以我建议先分析一下分享的那张页面是不是含有上个页面要传过来的数据,如果确实含有就能把参数挂到路径后面,再把这种带有参数的路径分享出去.如下面代码所示:

 onShareAppMessage: function () {

    let url = encodeURIComponent('/packageNews/pages/news_detail/news_detail?news_id=' + this.data.news_id);

    return {
      title: "热点详情",
      path:`/pages/index/index?url=${url}` 
    }

  }

上面代码分享的是news_detail这个页面,但是这个页面需要一个news_id才能获取数据.因此在拼接url时将news_id拼接上去.

如果还有不明白的同学可以扫下面前端技术群,有任何技术问题可以在群里面与大家相互沟通.

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序--实现分享功能 的相关文章

  • android O以后版本 自定义Notification

    最近在使用通知的时候 发现方法执行后 没有弹出通知 而是提示下面的错误 Developer warning for package com example test Failed to post notification on channe
  • HTTP和SOAP完全就是两个不同的协议

    HTTP和SOAP完全就是两个不同的协议 HTTP只负责把数据传送过去 不会管这个数据是XML HTML 图片 文本文件或者别的什么 而SOAP协议则定义了怎么把一个对象变成XML文本 在远程如何调用等 怎么能够混为一谈 这样说两种协议 H
  • 【Eviews】异方差的检验(图示检验法、white检验法、GQ检验法)与修正(加权最小二乘法)

    异方差 模型中随机扰动项的方差 随 解释变量 的变动而变动 异方差的检验 图示法 先对y x做线性回归 这样才能产生残差resid GQ检验法 切记 先对解释变量x排序 一般是按照升序 再截断样本 取一头一尾 计算残差平方和 构造F检验 得
  • 三数论大小(引用)

    题目描述 输入三个整数 然后按照从大到小的顺序输出数值 要求 定义一个函数 无返回值 函数参数是三个整数参数的引用 例如int a int b int c 在函数内通过引用方法来对三个参数进行排序 主函数调用这个函数进行排序 要求 不能直接
  • 网络爬虫数据解析的四种方式之XPath

    文章目录 前言 四种数据解析方式 数据解析之XPath XPath介绍 在浏览器中安装XPath helper插件 XPath使用方法 通过浏览器测试插件是否安装成功 通过python代码实现用XPath来解析数据 前言 快期末了 有个数据
  • Linux学习之VMware虚拟机安装

    前言 今天是癸卯年正月十五元宵节 在此祝大家元宵快乐 这篇文章主要给大家介绍安装VMware虚拟机的步骤 话不多说 开始安装 安装准备 VWware workstation rhel 8 2 x86 64 dvd iso 64 位操作系统

随机推荐

  • Bash 脚本

    什么是 Bash 简介 Bash GNU Bourne Again Shell 是一个为 GNU 计划编写的 Unix shell 它是许多 Linux 平台默认使用的 shell shell 是一个命令解释器 是介于操作系统内核与用户之间
  • 广度优先搜索(邻接矩阵)

    广度优先搜索 邻接矩阵 1 1一 用数组来存放顶点 vexs 0 A vexs 1 B vexs 2 C vexs 3 D vexs 4 E vexs 5 F vexs 6 G vexs 7 H vexs 8 I 1 2 用邻接矩阵来表示边
  • webrtc 看不到对方画面是什么原因_WebRTC 细节探究

    探究 从了解到理解 从理解到看见 写在前面 WebRTC 的使用并不复杂 可是其中的流程细节还是挺值的深挖的 每个人脑回路不一样 感到困惑的点可能也不一样 这篇主要讲了Signaling这个过程的一些小细节 如果有错欢迎指出一起讨论 深究
  • Windows系统配置maven环境

    windows安装maven 我们为什么要配置maven呢 Maven是统一集中管理好所有的依赖包 不需要程序员再去寻找 Maven项目会有一个 pom xml文件 在这个文件里面 只要你添加相应配置 他就会自动帮你下载相应jar包 不用你
  • 4.5 服务器上的 Git - Git 守护进程

    4 5 服务器上的 Git Git 守护进程 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 25 初稿 目录 文章目录 4 5 服务器上的 Git Git 守护进程 版本说明 目录 Git 守护进程 Git 守护进程 接
  • redis订阅发布介绍

    redis订阅发布 redis发布订阅 pub sub 是一种消息通信模式 订阅者 pub 发送消息 订阅者 sub 接受消息 比如生活中的微信订阅公众号 微博关注账号 redis客户端可以订阅任意数量的频道 这分为三个部分 消息发送者 频
  • 基于人工智能算法实现AI足球比赛

    相关资料 http t csdn cn 1XSne 实现目标 目前进展 主要用到就是射门概率那块 用随机数 能力值来控制 include
  • 周志华《Machine Learning》学习笔记(9)--EM算法

    上篇主要介绍了贝叶斯分类器 从贝叶斯公式到贝叶斯决策论 再到通过极大似然法估计类条件概率 贝叶斯分类器的训练就是参数估计的过程 朴素贝叶斯则是 属性条件独立性假设 下的特例 它避免了假设属性联合分布过于经验性和训练集不足引起参数估计较大偏差
  • firefly架构说明

    Firefly是免费 开源 稳定 快速扩展 能 热更新 的分布式游戏服务器端框架 采用Python编写 基于Twisted框架开发 它包括了开发框架和数据库缓存服务等各种游戏服务器基础服务 节省大量游戏开发的工作时间 真正做到让使用者把精力
  • 线性时间内从一个数组中找出第K个最小的元素——编程珠玑

    线性时间内从一个数组中找出第K个最小的元素 编程珠玑 题目 编写程序 在O n 时间内从数组x 0 n 1 中找出第k个最小的元素 算法中可以对x中的元素进行排序 思路 快速排序选择一个pivot对数组进行划分 左边小于pivot 右边大于
  • easyExcel 填写导出转换日期格式

    在使用easyExcel 填写导出的时候 遇到Date类型的字段填写在excel 显示的单元格的格式为自定义格式 原本该单元格格式设置了边框 居中 填写导出后的居然没有加边框 也没有居中 按照源码 写上一个Date转换类 实现Convert
  • 了解Spring的变迁从Spring3到Spring5

    随着互联网技术的发展 Spring也在不断的进化 从最早轻量级的支持J2EE到现在对高并发 多线程异步程序的支持 spring也不断的更新自己走在技术的最前沿 我们先来从Spring3开始看看spring的发展变迁 Spring3 Spri
  • java 控制 区域投屏,Scrcpy投屏原理浅析-设备控制篇

    起初我真的想过自己单独写一套来着 后来发现时间真的不够 所以有了对scrcpy源码的浅析 服务端我就用scrcpy现有的了 客户端scrcpy采用ffmpeg sdl2 0进行了跨平台的播放 我准备用Flutter重构客户端部分 Scrcp
  • SVN客户端安装及使用说明

    SVN客户端安装及使用说明 一 SVN客户端与语言包的安装 1 下载TortoiseSVN 2 安装TortoiseSVN 双击安装包 进入下一步 如图 3 点击Next 进入下一步 如图 4 选择接受 然后点击Next 进入下一步 如图
  • Python中逗号的三种作用

    最近研究python 遇到个逗号的问题 一直没弄明白 今天总算搞清楚了 1 逗号在参数传递中的使用 这种情况不多说 没有什么不解的地方 就是形参或者实参传递的时候参数之间的逗号 例如def abc a b 或者abc 1 2 2 逗号在类型
  • Python学习笔记(五)—LOOP 循环

    个人认为Python基础学习直到LOOP才算真正开始 循环有While do while 和for 比如while 我们要输出100条 you are my sunshine 可以表达如下 count 0 while count lt 10
  • opencv 打开1080P等高分辨率摄像头时卡顿问题的解决

    参考 blog csdn net lunweiwangxi3 article details 88556911 http blog sina com cn s blog 9b493e7b0102xvn6 html 总结http stacko
  • SRCNN以DIV2K数据集进行训练时,.h5文件、PSNR评价指标、运行结果

    由于是从Word文档直接复制过来 其中格式如果乱码或者不通顺 请评论区告知我 1 对于 h5文件的大小计算 输入图片后 由于大小不同 无法从图片直接计算 但整合后数组有两个 一个arrlabel 一个arrdata 1 其中 arrlabe
  • java 对象属性复制,将一个对象的属性值赋值给另一个对象, 属性名需要相同

    java 对象属性复制 将一个对象的属性值赋值给另一个对象 属性名需要相同 关键代码 import org springframework beans BeanUtils BeanUtils copyProperties a b demo
  • 微信小程序--实现分享功能

    本篇文章的目标是实现分享小程序中的单张页面给其他用户 并且打开分享后的页面拥有返回按钮 最终的效果 1 封装一个分享的组件