[uniapp的页面传参]详细讲解uniapp中页面传参的传递方式和接受方式 使用案例 代码注释

这篇具有很好参考价值的文章主要介绍了[uniapp的页面传参]详细讲解uniapp中页面传参的传递方式和接受方式 使用案例 代码注释。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


在uniapp中,页面传参是非常常见的需求。本文将详细讲解uniapp中页面传参的传递方式和接受方式,以及使用案例,同时附上代码注释。

一、传递方式

1. URL传参

URL传参是一种比较简单的传递方式,它是通过URL地址来传递参数的。我们可以在URL地址后面加上参数,例如:

<uni-button @click="goToDetail">跳转到详情页</uni-button>//编程式传参  比较常用
<navigator url="/pages/detail/detail?id=123">跳转到详情页</navigator>//标签传参
// 跳转到详情页,并传递id参数
goToDetail() {
  uni.navigateTo({
    url: '/pages/detail/detail?id=123'
  })
}

在接收页面中,我们可以通过this.$route.query来获取传递的参数:

export default {
  onLoad() {
    console.log(this.$route.query.id) // 输出:123
  }
}

对于微信小程序 this.$ route.query.id 可能不能使用 因为微信小程序不识别 this.$ route
而替代方案
不使用this.$ route 使用 onload传参

onLoad(getData) {//getData就是参数对象  兼用微信小程序
	console.log(getData.id);		
}

2. Storage传参

Storage传参是通过uni-app提供的Storage API来传递参数的。我们可以在跳转之前将参数存储到Storage中,然后在接收页面中获取:

<uni-button @click="goToDetail">跳转到详情页</uni-button>

// 跳转到详情页,并将id参数存储到Storage中
goToDetail() {
  uni.setStorageSync('id', 123)
  uni.navigateTo({
    url: '/pages/detail/detail'
  })
}

在接收页面中,我们可以通过uni.getStorageSync来获取存储的参数:

export default {
  onLoad() {
    console.log(uni.getStorageSync('id')) // 输出:123
  }
}

3. Vuex传参

Vuex传参是通过uni-app提供的Vuex API来传递参数的。我们可以在跳转之前将参数存储到Vuex中,然后在接收页面中获取:

<uni-button @click="goToDetail">跳转到详情页</uni-button>

// 跳转到详情页,并将id参数存储到Vuex中
goToDetail() {
  uni.$emit('setId', 123)
  uni.navigateTo({
    url: '/pages/detail/detail'
  })
}

在Vuex中,我们可以定义一个state来存储参数:

const store = new Vuex.Store({
  state: {
    id: ''
  },
  mutations: {
    setId(state, id) {
      state.id = id
    }
  }
})

在接收页面中,我们可以通过mapState来获取存储的参数:

import { mapState } from 'vuex'

export default {
  computed: {
    ...mapState(['id'])
  },
  onLoad() {
    console.log(this.id) // 输出:123
  }
}

4.api传参eventChannel

api传参是通过uni-app提供的API来传递参数的。我们可以在跳转之前将参数存储到options中,例如:

<uni-button @click="goToDetail">跳转到详情页</uni-button>

// 跳转到详情页,并传递id参数
goToDetail() {
  uni.navigateTo({
    url: '/pages/detail/detail',
    success: (res) => {
      res.eventChannel.emit('acceptDataFromOpenerPage', { id: 123 })
    }
  })
}

在这个例子中,我们使用了eventChannel来传递参数。我们在跳转之前,通过success回调函数来获取eventChannel,然后通过emit方法来传递参数。

在api传参的方式中,我们可以通过uni.on来监听传递的参数:

export default {
  onLoad() {
    const eventChannel = this.getOpenerEventChannel()
    eventChannel.on('acceptDataFromOpenerPage', (data) => {
      console.log(data.id) // 输出:123
    })
  }
}

在这个例子中,我们通过getOpenerEventChannel方法来获取eventChannel,然后通过on方法来监听传递的参数。

二、接受方式

1. URL传参

在URL传参的方式中,我们可以通过this.$route.query来获取传递的参数:

export default {
  onLoad() {
    console.log(this.$route.query.id) // 输出:123
  }
}

2. Storage传参

在Storage传参的方式中,我们可以通过uni.getStorageSync来获取存储的参数:

export default {
  onLoad() {
    console.log(uni.getStorageSync('id')) // 输出:123
  }
}

3. Vuex传参

在Vuex传参的方式中,我们可以通过mapState来获取存储的参数:

import { mapState } from 'vuex'

export default {
  computed: {
    ...mapState(['id'])
  },
  onLoad() {
    console.log(this.id) // 输出:123
  }
}

4.api传参eventChannel

在api传参的方式中,我们可以通过uni.on来监听传递的参数:

export default {
  onLoad() {
    const eventChannel = this.getOpenerEventChannel()
    eventChannel.on('acceptDataFromOpenerPage', (data) => {
      console.log(data.id) // 输出:123
    })
  }
}

在这个例子中,我们通过getOpenerEventChannel方法来获取eventChannel,然后通过on方法来监听传递的参数。

三、使用案例

下面是一个完整的使用案例,包括传递和接收参数的方式:

// pages/index/index.vue
<template>
  <view>
    <uni-button @click="goToDetail">跳转到详情页</uni-button>
  </view>
</template>

<script>
export default {
  methods: {
    goToDetail() {
      // URL传参
      // uni.navigateTo({
      //   url: '/pages/detail/detail?id=123'
      // })

      // Storage传参
      // uni.setStorageSync('id', 123)
      // uni.navigateTo({
      //   url: '/pages/detail/detail'
      // })

      // Vuex传参
      uni.$emit('setId', 123)
      uni.navigateTo({
        url: '/pages/detail/detail'
      })
    }
  }
}
</script>

// pages/detail/detail.vue
<template>
  <view>
    <text>{{ id }}</text>
  </view>
</template>

<script>
import { mapState } from 'vuex'

export default {
  computed: {
    ...mapState(['id'])
  },
  onLoad() {
    // URL传参
    // console.log(this.$route.query.id)

    // Storage传参
    // console.log(uni.getStorageSync('id'))

    // Vuex传参
    // console.log(this.id)
  }
}
</script>

// store/index.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    id: ''
  },
  mutations: {
    setId(state, id) {
      state.id = id
    }
  }
})

uni.$on('setId', id => {
  store.commit('setId', id)
})

export default store

以上就是uniapp中页面传参的传递方式和接受方式的详细讲解,以及使用案例和代码注释。希望对大家有所帮助!

四.提醒

以上的页面传参方式中

  1. URL传参
  2. Storage传参
    比较常用 可以满足大家的开发需求

另外的传参方式 看场景和需求在做处理
希望对你有所帮助文章来源地址https://www.toymoban.com/news/detail-825971.html

到了这里,关于[uniapp的页面传参]详细讲解uniapp中页面传参的传递方式和接受方式 使用案例 代码注释的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VUE路由传参的实用方式

    本文讲解了VUE项目中路由之间的传值方式,涉及到的方法都是开发时常用的,希望对大家有多帮助。 首先定义好路由 在需要跳转的home组件中使用 router-link 标签 在跳转到的about组件中拿到传过来的值 小结:params传参类似post,路由配置可以为  path : \\\'/about/ : id’ 或   path :

    2024年02月08日
    浏览(54)
  • vue路由传参的三种方式

    目录 1.动态路由传参 2.params传参 3.query传参         使用“路径参数”使用冒号  :  标记。当匹配到一个路由时,参数值会被设置到  this.$route.params ,也可以使用props来接收   params  传参(不显示参数)也可分为 声明式 和 编程式 两种方式,与方式一不同的是,这里是通过

    2024年02月11日
    浏览(40)
  • 微信小程序返回上级页面传参的几种方法

    在做微信小程序跳转页面,经常会遇到二级页面要返回上级页面,并且需要携带参数,wx.navigateTo()跳转大家都知道直接在url上面拼接参数,之后再二级页面onLoad(options)里获取,但是返回页面wx.navigateBack()不可以那样做,所以就可以用以下几种方式来做,具体看个人业务适合用

    2024年02月08日
    浏览(88)
  • 【Vue3】路由传参的几种方式

    路由导航有两种方式,分别是:声明式导航 和 编程式导航 参数分为query参数和params参数两种 1.传参 在路由路径后直接拼接 ?参数名:参数值 ,多组参数间使用 分隔。 如果参数值为变量,需要使用模版字符串。 2.接收与使用 1.传参 to不再传递字符,而是传一个对象,由于参数

    2024年02月21日
    浏览(52)
  • vue父子组件之间的传参的几种方式

    这是最常用的一种方式。通过props选项,在父组件中传递数据给子组件。在子组件中使用props声明该属性,就可以访问到父组件传递过来的数据了。 子组件向父组件传递数据的方式。在子组件中使用emit方法触发一个自定义事件,并通过参数传递数据。在父组件中监听这个事件

    2023年04月24日
    浏览(72)
  • 第三方组件及计算属性传参的问题解决方式

    唉,好想玩滋嘣。 表格数据某一列需要用的计算属性时,模板中使用计算属性 fullName 就会直接调用 fullName 函数,而在模板中 fullName(item) 相当于 fullName()(item) ,此处为函数柯里化。 封装好的组件的事件回调函数想要传其它参数,事件的回调直接写 :before-upload=\\\"beforeUpload(\\\'a\\\')

    2024年02月05日
    浏览(59)
  • 微信小程序如何实现页面传参和页面传递多个参数

    只要你的小程序超过一个页面那么可能会需要涉及到页面参数的传递,下面我总结了 4 种页面方法。 下面时多个参数页面传参的方式   通过在url后面拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔;如 ‘path?key=valuekey2=value2’。 案例:

    2024年02月11日
    浏览(80)
  • 【linux驱动开发】在linux内核中注册一个杂项设备与字符设备以及内核传参的详细教程

    开发环境: windows + ubuntu18.04 + 迅为rk3568开发板 相较于字符设备,杂项设备有以下两个优点: 节省主设备号:杂项设备的主设备号固定为 10,在系统中注册多个 misc 设备驱动时,只需使用子设备号进行区分即可。 使用简单:相比如普通的字符设备驱动, misc驱动只需要将基本信

    2024年01月21日
    浏览(51)
  • [uniapp页面路由跳转]详细讲解uniapp中使用标签和的api完成页面跳转使用方法 代码注释

    Uniapp是一款基于Vue.js的跨平台开发框架,允许开发者使用同一套代码构建多个平台的应用程序,包括iOS、Android、Web、微信小程序、支付宝小程序、百度小程序、头条小程序等。在Uniapp中,页面跳转是非常重要的功能之一,本文将详细介绍Uniapp中页面跳转的各种标签和API的使用

    2024年02月20日
    浏览(54)
  • uniapp 页面间传参方法

    页面之间传参大概可分为以下几种情况: 上级页面 → 下级页面(单向) 上级页面 ← 下级页面(单向) 上级页面 ↔ 下级页面(双向) uni.navigateTo:URL编程式传参 作为最常用也是最简单的跳转携带参数的API,这里不多赘述,想详细了解的朋友可以前往官方文档学习,这里只

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包