uni-app界面之间的传参

本文介绍在uni-app中如何在页面跳转时传递参数,包括字符串和复杂对象的编码与解码方法,以及在目标页面如何正确接收和解析这些参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在进行页面的跳转的时候,往往需要我们将一些参数携带着传递过去

这里的class样式使用的是uni.css的ui库
template

<template>
  <view>
    <view class="content">
      <view class="uni-list">
        <!-- 传简单字符串 -->
        <view @click="navigateTo(item)" class="uni-list-cell" hover-class="uni-list-cell-hover" v-for="(item,index) in list" :key="index">
          <view class="uni-list-cell-navigate uni-navigate-right">
            {{item}}
          </view>
        </view>
        <!-- 在传递大量参数时,推荐用此方法 -->
        <view @click="goInfo(info)">传对象</view>
      </view>
    </view>
  </view>
</template>

data

data() {
  return {
    list: ["我是第一个", "我是第二个", "我是第三个"],
    info: {
      name: '小明',
      age: 18,
      gender: '男'
    }
  }
},

methods

methods: {
  navigateTo(e) {
    // 传简单字符串
    uni.navigateTo({
      url: '/pages/example/details?data=' + e	//界面传值
    })
  },
  goInfo(e){
    // 传复杂对象-将对象进行encodeURIComponent编码
    let item = encodeURIComponent(JSON.stringify(e)),
    uni.navigateTo({
      url: '/pages/example/details?item=' + item
    })
  }
}

第二个界面接收上一个界面传过来的值

data() {
  return {
    data: "",
    userinfo: null
  }
},
onLoad(option) {	
  // 接收上一个界面传过来的值
  // 这里需要明白的是option 是一个对象
  // 将我们传递过来的参数进行了序列化
  // 可以使用实例代码的格式进行提取。

  // 接收简单字符串
  if (option.data) {
    this.$set(this, 'data', option.data)
  }
  
  // 接收复杂对象-进行解码
  if (option.item) {
    let info = JSON.parse(decodeURIComponent(option.item));
    this.$set(this, 'userinfo', info)
    // 输出结果
    // {name: '小明', age: 18, gender: '男'}
  }
},

如果看不懂,那咱来点实际的直接上图:
index.vue
在这里插入图片描述
details.vue
在这里插入图片描述

如有问题,欢迎留言!!

### 实现 Uni-app 开发的小程序中图片上传并传递参数 在 Uni-app 中实现图片上传功能的同时还可以通过 URL 参数或其他机制向目标页面传递额外数据。对于图片上传操作,通常会涉及到调用微信小程序 API 来选择本地文件,并将其发送至服务器端处理。 #### 使用 `uni.chooseImage` 进行图片选取 为了允许用户从设备相册或相机获取图像资源,在源码层面可以通过调用 `uni.chooseImage()` 方法来完成这一过程[^1]: ```javascript // 获取图片 const chooseImage = () => { uni.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success(res) { console.log('choose image:', res); const tempFilePaths = res.tempFilePaths; uploadImage(tempFilePaths); // 调用上传函数 navigateToNextPageWithParams(tempFilePaths); // 同时跳转并携带参数 } }); }; ``` #### 图片上传逻辑 当选择了要上传的图片之后,则需进一步执行实际的网络请求将这些选定好的临时路径提交给后台服务接口。这里假设已经有一个可用的服务地址用于接收 POST 请求中的二进制流形式的数据[^2]: ```javascript function uploadImage(paths){ paths.forEach(path=>{ uni.uploadFile({ url: 'https://example.com/upload', // 替换成真实的API地址 filePath: path, name: 'file', formData: {}, // 如果有其他表单字段可在此处添加 success(uploadRes) { console.log('upload result:', JSON.parse(uploadRes.data)); }, fail(err) { console.error('upload failed:', err); } }) }) } ``` #### 结合导航与传参 与此同时,如果希望在成功选择图片后立即切换到另一个界面显示详情信息或者其他相关内容的话,那么可以在上述基础上继续利用 `navigateTo` 或者类似的路由方法来进行页面之间的转换工作;并且借助于查询字符串的方式附加必要的配置项作为新视窗加载所需的初始化条件之一[^4] : ```javascript function navigateToNextPageWithParams(imagePaths){ let params = encodeURIComponent(JSON.stringify({images:imagePaths})); uni.navigateTo({ url:`/pages/targetPage/targetPage?params=${params}` }); } ``` 以上就是关于如何基于 Uni-app 平台构建具有图片上传特性的微信小程序组件的具体实践方案概述。值得注意的是,具体实施细节可能会因项目需求不同而有所差异,因此建议开发者们根据实际情况灵活调整相应策略。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土拨鼠的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值