您的当前位置:首页>全部文章>文章详情

【UniApp】如何在uniapp中实现页面间的传参和回传

CrazyPanda发表于:2023-12-23 23:05:19浏览:331次TAG:

1.jpg


如何在uniapp中实现页面间的传参和回传

一、传参

在uniapp中,我们可以通过路径传参、props传参和vuex传参的方式实现页面间的参数传递。

  1. 路径传参

路径传参指的是在跳转到另一个页面时,将参数直接拼接在URL后面传递。在跳转时,我们通过在URL后面加上参数的方式将参数传递给下一个页面,在下一个页面可以通过uni.getStorageSync()方法获取参数的值。

// 页面A
uni.navigateTo({
  url: '/pages/B/B?param1=123&param2=456'
})
 
// 页面B
onLoad: function (options) {
  console.log(options.param1) //输出123
  console.log(options.param2) //输出456
}
  1. props传参

props传参是将参数作为子组件的属性进行传递,在父组件中使用子组件时附加属性来传递参数。在子组件中通过this.$props获取传递的参数。

// 父组件
<template>
  <child-component :param1="param1"></child-component>
</template>
 
<script>
export default {
  data() {
    return {
      param1: '123',
      param2: '456'
    }
  }
}
</script>
 
// 子组件
<template>
  <view>{{ $props.param1 }}</view>
  <view>{{ $props.param2 }}</view>
</template>
  1. vuex传参

vuex是uniapp中的状态管理工具,我们可以使用vuex来进行页面间的参数传递。在发送参数时,将参数存储到vuex的state中。在接收参数时,通过vuex的getters方法获取参数的值。

// 页面A
<template>
  <button @click="sendParam">传递参数</button>
</template>
 
<script>
export default {
  methods: {
    sendParam() {
      this.$store.commit('SET_PARAM', '参数值')
      uni.navigateTo({
        url: '/pages/B/B'
      })
    }
  }
}
</script>
 
// 页面B
onLoad: function () {
  console.log(this.$store.getters.param) //输出参数值
}
 
// store
import Vue from 'vue'
import Vuex from 'vuex'
 
Vue.use(Vuex)
 
const store = new Vuex.Store({
  state: {
    param: ''
  },
  mutations: {
    SET_PARAM(state, value) {
      state.param = value
    }
  },
  getters: {
    param: state => state.param
  }
})
 
export default store

二、回传

在uniapp中,页面之间的回传可以通过uni.navigateBack方法以及EventBus事件总线来实现。

  1. uni.navigateBack回传

uni.navigateBack方法用于返回上一级页面,可以通过传递参数的方式进行回传。

// 页面A
uni.navigateTo({
  url: '/pages/B/B'
})
 
// 页面B
uni.navigateBack({
  delta: 1,
  success: function () {
    uni.getOpenerEventChannel().emit('acceptDataFromB', {data: '回传的参数'})
  }
})
 
// 页面A
onLoad: function () {
  const eventChannel = this.getOpenerEventChannel()
  eventChannel.on('acceptDataFromB', function (data) {
    console.log(data) //输出{data: '回传的参数'}
  })
}
  1. EventBus事件总线回传

EventBus是用于组件之间的通信的工具,在uniapp中可以使用uni.$emit发布事件和uni.$on订阅事件的方式进行回传。

// 页面A
// main.js
Vue.prototype.$eventBus = new Vue()
 
// 页面B
this.$eventBus.$emit('acceptDataFromB', {data: '回传的参数'})
uni.navigateBack({
  delta: 1
})
 
// 页面A
this.$eventBus.$on('acceptDataFromB', function (data) {
  console.log(data) //输出{data: '回传的参数'}
})

通过上述方法,我们可以在uniapp中实现页面间的参数传递和回传。通过路径传参、props传参、vuex传参以及uni.navigateBack回传和EventBus回传等方式可以根据实际需求选择适合的方法来实现参数的传递和回传。

以上就是如何在uniapp中实现页面间的传参和回传的详细内容,更多请关注php中文网其它相关文章!

猜你喜欢

【UniApp】uniapp应用如何实现绘画训练和动画制作
uniapp应用如何实现绘画训练和动画制作引言:随着移动互联网技术的不断发展,移动应用程序的开发变得越来越普遍。uniapp作为一款基于Vue.js框架的跨平台开发工具,为开发人员提供了一种简单高效的方式来构建跨平台的应用程序。本文将介绍如何使用uniapp实现绘画训练和动画制作,并附上具体的代码示例。一、绘画训练实现绘画训练可以让用户提升艺术技巧和创造力,uniapp提供了Canvas组件来实现绘画功能。下面是一个简单的绘画训练应用的示例代码:在uniapp的pages目录下创建一个
发表于:2023-12-11 浏览:423 TAG:
【UniApp】Uniapp怎么动态更改tabbar
Uniapp是一款跨端开发框架,可以同时开发出H5、小程序、app等多个平台的应用,是非常实用的开发工具。其中,tabbar是作为底部导航栏来展示多个页面的重要控件之一。在开发过程中,有时需要根据不同的业务需求动态更改tabbar,本文将介绍如何在Uniapp中实现动态更改tabbar的方法。一、tabbar的基本使用及结构在Uniapp中使用tabbar,需要在pages.json文件中设置底部导航栏的样式和页面路径。示例代码如下:&quot;tabBar&quot;:&nbsp;{
发表于:2023-12-25 浏览:475 TAG:
【UniApp】uniapp路由跳转传递与接收参数
Uniapp 是一个基于 Vue.js 的跨平台开发框架,它允许开发者使用一套代码来同时构建 iOS、Android、H5 等多个平台的应用。在 Uniapp 中,路由传参是非常常见的需求,它可以让页面之间进行数据的传递和交互。下面是对 Uniapp 路由传参的详细解析一、传递参数在 Uniapp 中,可以通过两种方式来传递参数:1.通过 URL 参数传递通过在 URL 中添加参数的方式传递数据,可以在目标页面中通过 $route.query 获取传递过来的参数。例如,在 A 页面中跳转到 B
发表于:2023-12-13 浏览:399 TAG:
【UniApp】uniapp跨域
问:为什么会有跨域问题? 由于浏览器的同源策略导致的,是浏览器的一种安全保护机制。 浏览器从一个域名的网页去请求另一个域名的资源时,协议、域名、端口 任一不同,都是跨域解决uniapp的跨域问题有很多方式,下面总结一下常用的几种方式 1. 使用 jsonp,可在我们封装的网络通讯中添加dataType:&#39;jsonp&#39;总结: 但是此种方式仅支持 get 请求,post好像用不了。 具体可参考:https://www.imooc.com/article/2919312. 在unia
发表于:2023-12-08 浏览:339 TAG:
【UniApp】uniapp兼容微信小程序和支付宝小程序遇到的坑
1、支付宝不支持v-show改为v-if。2、v-htmlApp端和H5端支持 v-html ,微信小程序会被转为 rich-text,其他端不支持 v-html。解决方法:去插件市场找一个支持跨端的富文本组件。3、导航栏处有背景色延伸至导航栏外兼容微信小程序和支付宝小程序&nbsp;pages.json:给支付宝的导航栏设置透明{ &quot;path&quot;:&nbsp;&quot;pages/agent/agent&quot;, &quot;style&quot;:&nbsp;{
发表于:2023-12-26 浏览:385 TAG:
【UniApp】uniapp中路由传参的加密与解密方式
uniapp中路由传参的加密与解密方式,需要具体代码示例【引言】在uniapp开发中,经常会遇到一种情况,就是需要将一些敏感信息通过路由进行传递,但是传递的参数是明文,有一定的安全风险。为了保护用户数据的安全性,我们可以对路由传参进行加密和解密处理,以增加数据的安全性。本文将介绍uniapp中路由传参的加密与解密方式,并提供实际代码示例。【加密方式】在uniapp中,可以使用常见的加密算法(如AES、RSA等)对传递的参数进行加密,以保护数据的安全性。下面以AES算法为例,介绍加密的方式及代码示
发表于:2024-04-03 浏览:335 TAG:
【UniApp】uniapp 中使用addEventListener
uniapp 中使用 addEventListener 方法可以给某个元素绑定事件监听。使用方法:document.getElementById(&quot;some-element&quot;).addEventListener(&quot;click&quot;,&nbsp;function()&nbsp;{ &nbsp;&nbsp;//&nbsp;do&nbsp;something&nbsp;when&nbsp;the&nbsp;element&nbsp;is&nbsp;clicked }
发表于:2023-12-13 浏览:540 TAG:
【Uniapp】uniapp页面跳转的五种方式总结
一、uni.navigateTo定义:保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。使用://&nbsp;1.不传参 uni.navigateTo({ &nbsp;&nbsp;&nbsp;&nbsp;url:&#39;./home/index&#39; }); //&nbsp;2.传参字符串 uni.navigateTo({ &nbsp;&nbsp;&nbsp;&nbsp;url:`./home/index?title=${title}` });
发表于:2024-03-26 浏览:382 TAG:
【UniApp】利用uniapp实现图片压缩功能
利用uniapp实现图片压缩功能随着手机拍照功能的提升,我们在日常生活中经常会拍摄大量的照片。然而,这些高像素的照片占据了手机的存储空间,使手机变得缓慢且容易存满。为了解决这个问题,我们可以利用uniapp中的相关技术,实现图片压缩功能,将图片压缩至更小的文件大小,保留合适的像素和画质。下面我们将详细介绍在uniapp中如何实现图片压缩功能。步骤一:引入相关插件首先,我们需要在uniapp项目中引入相关的插件。最常用的图片压缩插件是uni-image-compress,它基于image
发表于:2023-12-09 浏览:449 TAG:
【UniApp】uniapp 微信分享
前言&nbsp; &nbsp; &nbsp; &nbsp;微信分享是uniapp开发中常见的需求,大部分的app或者小程序都会具备微信分享的功能,但微信分享效果并不难实现,因为uniapp本身自带了一个微信分享的api,我们只需要调用微信分享的api即可实现前置条件&nbsp; &nbsp; &nbsp; &nbsp; 要完成微信分享首先得打开微信分享的功能,打开manifest.json文件,点击app模块配置,找到微信分享并选中即可&nbsp; &nbsp; &nbsp; &nbsp; 注意
发表于:2023-12-13 浏览:345 TAG: