当前位置: 首页 > news >正文

免费开源cms网站源码网页设计公司网站设计

免费开源cms网站源码,网页设计公司网站设计,律师网站开发,西安保障性住房建设投资中心网站在微信小程序中,参数传递常用于页面间通信以及组件间交互,使得不同页面或组件能共享和使用相关数据。主要的参数传递场景包括页面跳转时传递参数以及组件间传递数据等。一、页面跳转时传递参数1. 声明式导航(通过navigator组件)传…

在微信小程序中,参数传递常用于页面间通信以及组件间交互,使得不同页面或组件能共享和使用相关数据。主要的参数传递场景包括页面跳转时传递参数以及组件间传递数据等。

一、页面跳转时传递参数

1. 声明式导航(通过navigator组件)传递参数

使用 <navigator> 组件进行页面跳转时,可以在 url 属性中通过查询字符串的形式添加参数,目标页面则可以在对应的生命周期函数中获取传递过来的参数。

示例:

// 当前页面的WXML中,跳转到目标页面并传递参数
<navigator url="/pages/detail/detail?id=1001&name=张三">跳转到详情页</navigator>// 目标页面(detail.js)的onLoad生命周期函数中获取参数
Page({onLoad(options) {console.log(options.id); // 输出 1001console.log(options.name); // 输出 "张三"}
})

注意:参数名和参数值都需进行 URL 编码(小程序内部会自动处理一些常见的字符编码),如果参数值包含特殊字符(如空格、中文等),建议先手动进行编码处理(可使用JavaScript的 encodeURIComponent 函数),在目标页面获取后再进行解码(使用 decodeURIComponent 函数)。

2. 编程式导航(通过API调用)传递参数

使用如 wx.navigateTowx.redirectTo 等导航 API 进行页面跳转时,同样在 url 参数中添加查询字符串来传递参数。

示例:

// 当前页面的.js文件中,通过wx.navigateTo跳转到目标页面并传递参数
Page({goToDetail() {wx.navigateTo({url: '/pages/detail/detail?id=1002&age=20'});}
})// 目标页面(detail.js)的onLoad生命周期函数中获取参数
Page({onLoad(options) {console.log(options.id); // 输出 1002console.log(options.age); // 输出 20}
})

二、组件间传递参数

1. 父组件向子组件传递参数(通过属性)

在自定义组件中,父组件可以通过属性的方式向子组件传递数据,子组件通过 properties 定义来接收这些属性。

示例:

// 父组件的WXML中使用子组件并传递参数
<my-component title="这是标题" count="5"></my-component>// 子组件(my-component.js)中接收参数
Component({properties: {title: String, // 定义title属性接收父组件传递的字符串类型数据count: Number // 定义count属性接收父组件传递的数字类型数据}
})

子组件还可以对接收的属性进行类型验证、设置默认值以及添加属性值变化的观察者函数等,例如:

Component({properties: {title: {type: String,value: '默认标题',observer(newVal, oldVal) {console.log('title属性值发生了变化,旧值:', oldVal, '新值:', newVal);}}}
})

2. 子组件向父组件传递参数(通过事件触发)

子组件通过触发自定义事件,并携带数据,可以向父组件传递参数,父组件通过监听该自定义事件来接收数据。

示例:

// 子组件(my-component.js)中触发自定义事件并传递参数
Component({methods: {handleClick() {const data = { message: '这是子组件传递的数据' };this.triggerEvent('customEvent', data);}}
})// 父组件的WXML中监听子组件的自定义事件
<my-component bind:customEvent="handleChildData"></my-component>// 父组件(父组件.js)中处理接收到的数据
Page({handleChildData(e) {console.log(e.detail.message); // 输出 "这是子组件传递的数据"}
})

三、通过全局变量传递参数(简单但不推荐复杂场景)

可以在 app.js 中定义全局变量,然后在不同页面或组件中通过 getApp() 函数获取这个全局对象来访问和修改全局变量,以此实现数据共享(间接的参数传递)。

示例:

// app.js中定义全局变量
App({globalData: {userInfo: null}
})// 在页面或组件中获取和修改全局变量
Page({onLoad() {const app = getApp();app.globalData.userInfo = { name: '李四' };}
})

不过这种方式在复杂应用中容易导致数据流向混乱、难以维护等问题,建议仅用于简单的全局数据共享场景,复杂场景优先考虑使用状态管理库(如mobx-miniprogram等)。

四、通过缓存传递参数(适合临时存储少量数据)

利用小程序提供的缓存 API(如 wx.setStorageSync 和 wx.getStorageSync),可以将数据临时存储在本地缓存中,然后在需要的页面或组件中获取使用,实现类似参数传递的效果。

示例:

// 在一个页面中存储数据到缓存
Page({saveData() {const data = { key: 'value' };wx.setStorageSync('tempData', data);}
})// 在另一个页面中获取缓存中的数据
Page({onLoad() {const data = wx.getStorageSync('tempData');console.log(data.key); // 输出 "value"}
})

但要注意缓存有容量限制(目前一般为10MB左右),且需合理管理缓存数据的有效期和清理机制,避免数据冗余或过期数据占用空间等问题。

五、总结与建议

页面跳转时的参数传递最常用在不同页面间共享初始化数据等场景;组件间传递参数则利于组件的复用和组件化开发时的通信;全局变量和缓存传递参数在特定简单场景下可作为补充手段,但要谨慎使用以避免潜在的问题。根据具体的业务需求和应用场景,选择合适的参数传递方式,有助于构建清晰、可维护的小程序代码结构。

http://www.dtcms.com/a/419059.html

相关文章:

  • [pytest] autouse 参数:自动使用fixture
  • 上海市建上海市建设安全协会网站wordpress盲注
  • 论文阅读三-第二章(3)
  • 在 Windows 系统上怎么使用rabbitmq相关命令,比如:rabbitmqctl list_queues 命令
  • spire.doc for .net 在word的表格最后增加行及索引超限处理办法
  • 【android 驱动开发十】中断唤醒功能-维持500ms唤醒状态
  • 微信上可以做网站吗广州专业视频制作
  • wordpress还原网站源码易语言 wordpress
  • 深入解析AppCrawler:开源自动遍历测试工具配置指南
  • 24届(华为OD)Java面经
  • 20届-测试面经-华为OD
  • 重庆seo整站优化效果百度竞价推广属于什么广告
  • 朝阳区住房和城乡建设部网站营销模式有几种
  • linux学习笔记(5)计算机基本硬件结构
  • 自定义分页控件,只显示当前页码的前后N页
  • 软件开发和网站建设的区别做车贷的网站
  • PC16550串口中断接收与异常处理程序
  • 自动化脚本提升效率
  • mysql旧版本存储嵌入模型的向量数据
  • 公司网站建设宣传话语申请一个域名可以建设一个网站吗
  • 合川做网站临汾网站建设
  • HGAME 2023 week1]a_cup_of_tea
  • vue 打包element plus组件生成对应css文件的问题
  • 网站 接入微信公众号登陆入口
  • 做网站和做appwordpress category模板
  • Windows---进程状态信息获取的核心接口<Psapi.h>
  • flink状态管理
  • 有成功案例的网站汉口北做网站
  • k8s的kube-prosy
  • 手机网站费用电商都有哪些平台