小程序页面传值、页面与组件通信方式总结

article/2025/10/6 14:41:11

在小程序开发中,页面传值经常会用到,如果有调用组件和插件的话还会涉及到页面与组件的通信传值等,今天我是想来总结下微信小程序页面和组件传值。

一.页面与页面的传值

1.跳转的url带参传值

微信小程序页面直接传值我们经常用到的是页面URL跳转传值,跳转到的页面通过到生命周

onLoad里面接收。

//A页面Page({data:{},linkTo:function(){//页面事件绑定方法let data = 'hello world';wx.navigateTo({url: '/pages/my/index?name=' + data,})}
})//B页面
Page({data:{name:' '},onLoad:function(option){//接收数据this.setData({name: option.name})}
})

如果页面有多个值要传,直接用&符合链接起来就可以了。

比如'/pages/my/index?name=' + data1+'&number='+data2;

2.全局globalData传值

//app.jsApp({onLaunch (options) {// Do something initial when launch.},onShow (options) {// Do something when show.},onHide () {// Do something when hide.},onError (msg) {console.log(msg)},globalData: {name:'hello world'}})//A页面const app = getApp();//获取全局对象Page({data:{},onLoad:function(){let name = app.globalData.name;console.log(name);//hello world}})

全局数据的拿去是通过拿去globalData对象,再到其他页面获取,当然你也可以

修改全局对象里面数据其他页面从新去获取。

//A页面const app = getApp();//获取全局对象Page({data:{},onLoad:function(){app.globalData.name='微信小程序'; //修改全局数据}})//B页面const app = getApp();//获取全局对象Page({data:{},onLoad:function(){let name = app.globalData.name;console.log(name);//微信小程序}})

3.页面数据缓存wx.setStorageSync(KEY,DATA)

//A页面Page({data:{},onLoad:function(){wx.setStorage({key:"name",data:"hello world"})}})//B页面Page({data:{},onLoad:function(){var value = wx.getStorageSync('name');console.log(value);// hello world}})

此处缓存数据要用同步wx.setStorageSync(),因为异步有可能数据或者有可能会获取不到

 

二.页面与组件通信

在开发中,很多页面中会使用相同的组件,这时可以将具有相同信息的部分封装成一个组件,方便开发中调用。在调用中可能会涉及到数据的传递问题,例如页面与组件,组件与组件直接的数据传递。

首先看看页面与组件直接的数据传递。

    1. 组件需要获取页面传递数据, 可以使用组件的属性来传递值

    2. 页面需要获取组件中修改的数据, 可以使用组件中的事件触发页面中定义的事件来获取

第一、组件获取页面中数据

  先创建一个自定义组件test-component

<!--components/test-component/test-component.wxml-->
<view><input class=‘new-name‘ placeholder=‘请输入名字‘ bindinput="bindInputFunc" value=‘{{inputValue}}‘></input><button class=‘btn‘ size=‘mini‘ bind:tap=‘search‘>搜索</button><view>搜索记录:</view><block wx:for=‘{{records}}‘ wx:for-index="index" wx:for-item="record"><view class=‘record‘>{{record}}</view></block>
</view>

第一、在组件test-component.js中定义一个属性

// components/test-component/test-component.js
Component({/*** 组件的属性列表*/properties: {namesData: {type:Array,value:[],observer: function (newVal, oldVal, changedPath) {// 属性被改变时执行的函数(可选),也可以写成在methods段中定义的方法名字符串, 如:‘_propertyChange‘// 通常 newVal 就是新设置的数据, oldVal 是旧数据console.log(newVal);console.log(oldVal);this.setData({records:newVal})}}},/*** 组件的初始数据*/data: {inputValue:‘‘,records: []},/*** 组件的方法列表*/methods: {//输入框输入事件bindInputFunc: function (e) {this.setData({inputValue: e.detail.value})},/*** 组件搜索按钮事件*/search: function() {let records = [...this.data.records];records.push(this.data.inputValue);this.setData({ records, inputValue: ‘‘ })this.triggerEvent("search", { records});/*var myEventDetail = {} // detail对象,提供给事件监听函数var myEventOption = {} // 触发事件的选项this.triggerEvent(‘myevent‘, myEventDetail, myEventOption)触发事件的选项包括:选项名            类型        是否必填        默认值        描述bubbles           Boolean       否           false        事件是否冒泡composed         Boolean       否           false        事件是否可以穿越组件边界,为false时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部capturePhase      Boolean       否           false         事件是否拥有捕获阶段*/}}
})
  
{"usingComponents":{"test-component":"/components/test-component/test-component"}
}
<test-component namesData=‘{{names}}‘ bind:search=‘homeSearch‘></test-component>
// pages/home/home.js
Page({ /*** 页面的初始数据*/data: {names:[‘aaaa‘,‘bbbb‘,‘cccc‘]},
/*** 搜索的点击事件*/homeSearch: function(e) {console.log(e.detail); // 自定义组件触发事件时提供的detail对象}})


http://chatgpt.dhexx.cn/article/W9qJL5M8.shtml

相关文章

使用搜狗接口对微信公众号爬虫

搜狗搜索因为有微信公众号搜索的接口&#xff0c;所以通过这个接口就可以实现公众号的爬虫 需要安装几个python的库&#xff1a;selenium,pyquery 还使用到phantomjs.exe,这个需要我们自己去下载&#xff0c;然后放在自己的python工程下即可 在输入框输入想要爬取的公众号…

爬取微信公众号文章

新增了GUI界面&#xff0c;效果如图 ************************************************************************************************试了多种方法&#xff0c;发现还是使用自己创建一个公众号再搜索的方式最有用。有三种方法&#xff0c;第一种&#xff1a;用搜狗微信公…

[python]微信公众号文章爬取

[python]微信公众号文章爬取 需求 爬取一些微信公众号的文章 数据来源 1.搜狗微信搜索&#xff0c;可以搜索微信公众号文章&#xff0c;但只能显示该公众号最近十篇的文章 2.通过个人微信公众号中的素材管理&#xff0c;查看其他微信公众号文章 步骤 1.手动从网站上获取co…

Python2.7爬虫——爬取微信公众号文章

今天跟着这篇博客抓取微信公众号文章练习了一下爬虫&#xff0c;运行成功。想和大家分享一下过程中出现的问题和解决方法。 运行环境 windows 7 Pycharm2018 Python 2.7 目录 目录 1.安装必要的Python包 1.1 关于下载selenium包1.2关于下载json包 2.运行之前的准备 代码中需…

基于搜狗搜索的微信公众号爬虫实现(C#版本)

为什么80%的码农都做不了架构师&#xff1f;>>> Author: Hoyho Luo Email: luohaihaogmail.com Source Url:http://here2say.me/11/ 转载请保留此出处 本文介绍基于搜狗的微信公众号定向爬虫&#xff0c;使用C#实现&#xff0c;故取名WeGouSharp。本文中的项目托管…

fiddle python抓取微信公众号文章

分析 1&#xff0c;先进行准备工作&#xff1a;使用fiddle抓包&#xff08;大家可以自行百度怎么使用哦&#xff09; 2&#xff0c;打开电脑端微信&#xff0c;找到需要爬取的公众号 点击进入公众号&#xff0c;再打开fiddle&#xff0c;微信停留在这一步 打开fiddle后再点击…

Java Selenium 爬取微信公众号文章图片.md

项目地址结尾 一、前期准备 1. 下载selenium的驱动 Chrome http://chromedriver.storage.googleapis.com/index.html Firefox https://github.com/mozilla/geckodriver/releases/ IE http://selenium-release.storage.googleapis.com/index.html 下载好驱动然后放到、对…

python爬虫(17)爬出新高度_抓取微信公众号文章(selenium+phantomjs)

个人博客请访问 http://www.x0100.top 一.思路分析 目前所知晓的能够抓取的方法有&#xff1a; 1、微信APP中微信公众号文章链接的直接抓取&#xff08;http://mp.weixin.qq.com/s?__bizMjM5MzU4ODk2MA&mid2735446906&idx1&snece37deaba0c8ebb9badf07e5a5a3bd…

获取微信公众号文章内视频真实地址

PHP获取微信公众号文章内视频与音频真实地址 微信公众号的文章的爬取可以看到这个项目&#xff1a;github 基于QueryList的微信公众号文章获取工具 有任何问题可以留言。 返回数据&#xff1a; 包含音频和视频包含多个视频 原有找到的文章 如何抓取微信公众号文章里面的视频…

Python爬取微信公众号文章、点赞数

代码还是热乎的&#xff0c;只要你细心一步步的慢慢调试&#xff0c;绝壁没问题 前期准备 订阅号&#xff1b;Python&#xff1b;Fiddler&#xff1b;微信账号&#xff1b; 流程 使用用微信公众号生成cookie使用Fiddler抓取微信公众号数据&#xff0c; 获取阅读数通过cooki…

如何爬取微信公众号文章(二)

在如何爬取微信公众号&#xff08;一&#xff09;中完成了将爬取公众号文章的元数据存入数据库&#xff0c;其中包括文章的连接、标题、发布时间、摘要和封面图片等信息。下面介绍如何根据文章链接来爬取文章内容。 开发环境 windows 7 x64python3.7 (Anaconda)vscode 编辑器…

如何爬取微信公众号文章(一)

微信公众号是目前最为流行的自媒体之一&#xff0c;上面有大量的内容&#xff0c;如何将自己感兴趣的公众号内容爬取下来&#xff0c;离线浏览&#xff0c;或者作进一步的分析呢&#xff1f; 下面我们讨论一下微信公众号文章的爬取。 环境搭建 windows 7 x64python3.7 (Anac…

Python 爬虫之微信公众号

Python 爬虫之微信公众号 源代码放在文末。 本次爬虫需要的工具如下: selenium 驱动器对应浏览器的 webdriver一个微信订阅号在 2017 年 6 月左右,微信官方发布一篇文章 https://mp.weixin.qq.com/s/67sk-uKz9Ct4niT-f4u1KA,大致意思就是以后发布文章的时候可以插入其他公…

公网访问局域网家用nas

提到外网访问不得不说说家里局域网的搭建结构了&#xff0c;就拿大众最常用的方式举例&#xff0c;网络运营商的光纤入户&#xff0c;通过运营商提供的光猫直接pppoe进行拨号&#xff0c;再连接自己的路由器&#xff0c;分配至各网口。 自从上次充当灵魂画手被嘲笑了以后就改用…

外网访问群晖NAS VMM搭建Openwrt的admin界面

偶然在网上看到很多的帖子使用群晖搭建openwrt搭建旁路由,心血来潮体验了一把,记录一下自己的搭建的整个过程,并最终实现外网访问Openwrt的admin界面。 本人使用的群晖nas DS220+,其他品牌未尝试。 一、前期配置 1、先在套件中心下载VMM(Virtaul Machine Manager) 2、下…

2022年10月 cpolar软件实现内网穿透连接群晖NAS

前言 1.cpolar简介 cpolar是一款拥有远程控制和内网穿透功能的软件。而且还可以监控端口的HTTP请求&#xff0c;利用实时的cpolar Web UI开发者工具&#xff0c;让您调试代码更容易。您可以监听所有隧道上的HTTP消息包&#xff0c;分析消息包的结构内容&#xff0c;找出问题点…

群晖内网穿透 实现外网快速访问 无需公网

有群晖的情况下&#xff0c;在内网我们可以通过ip正常访问我们的群晖/NAS;但是我们想要在外网访问的时候该怎么办&#xff0c;没有公网ip&#xff0c;扯专线太贵&#xff0c;自己搭建太麻烦。这无疑是个难题&#xff1b; 今天&#xff0c;小编找到了一款免费的内网穿透工具来实…

通过公网+域名访问家里的群晖服务器

公网域名访问群晖服务器 前言准备的东西如何判断你家里的宽带是公网IP通过公网IP网访群晖&#xff0c;端口映射申请域名和DDNS添加DDNS映射写在最后 前言 最近换了个工作&#xff0c;然后有代码的托管需求。想想用GitHub太卡了&#xff0c;国内的开源托管网站因为一些国人的素…

猫盘群晖外部网络访问的三种方法:公网IP、内网穿透、qc的实际评测

目录 具体过程概述内网穿透公网IPQuickconnect(QC&#xff09;结语 具体过程 概述 最近想入手一个NAS&#xff0c;由于我是新手入门&#xff0c;就选择入手了便宜的猫盘。我的猫盘是白群晖系统所以支持QC的功能&#xff0c;因此对目前猫盘群晖的DiskStation Manager&#xff…

特征值和特征矩阵

写一点对矩阵特征值和特征矩阵的理解 1. A是一个矩阵&#xff0c;它作用在向量v上。如果A是2阶对角阵的话&#xff0c;它起到的作用是将向量v在横纵方向拉伸 2. 当A是一个普通2阶矩阵时&#xff0c;它对v的拉伸不再是横纵方向&#xff0c;而是任意方向的&#xff0c;这取决于实…