uni-app页面间通信

关于页面间跳转传值

1、使用页面路径传参
**(1)uni.navigateTo( ) / uni.redirectTo( )
参数与路径之间使用 ? 分割,参数键 与 参数值 用等号 = 相连,不同的参数用& 分割。
**(2)url 传参方式会有长度限制,太长字符串会传递失败!!!
**(3)跳转到另一页面,在onLoad 生命周期函数中 通过参数,可以获取到传递的参数

uni.navigateTo({
  url: "/pages/first/first_son?name=lxc&age=20",
})
export default {
	onLoad(option) {
		console.log(option) // {name: "lxc", age: "20"}
	},
	methods:{
		
	}
}

2、页面通信
与vue一样使用uni.$emit( ) 触发自定义事件, uni . $on ( ) 监听自定义事件。
uni . $emit 可以在任何页面触发,uni. $on 只能在全局(app.vue)中监听自定义事件。

3、全局变量
(1) 通常创建一个common目录文件,新建global.js文件,文件名自定义,定义全局变量或函数
(2) 缺点:每次都需要引入。

const URL = 'https://baidu.com'
function isArray(param) {
	return Aarry.isArray(param) || param instanceof Array 
}
export default {
	URL,
	isArray
}

引入

<script>
	import global from 'global.js' // 后边路径
	export default {
		onLoad() {
			console.log(global.URL, global.isArray([]))
		}
	} 
</script>

4、vue实例挂载

将一些使用频率较高的常量或者方法,挂载至Vue.prototype 上, 这样每个Vue实例都会继承。

注意
(1)这种方式只支持vue页面。
(2)挂载至Vue实例上的属性和方法建议做一个标记,比如前边都加上$ 符号,便于维护。
在main.js中挂载属性 或 方法:

Vue.prototype.$websiteUrl = 'https://bnaidu.com'

在.vue组件中直接使用即可:

<script>
export default {
	onLoad() {
		console.log(this.$websiteUrl)
	}
}
</script>

5、globalData
定义:
globalData是一种比较简单的全局变量使用方式。
在小程序中有globalData的概念,uni-app也实现了此功能,在App.vue可以定义globalData。
在App.vue中:

// App.vue
<script>
export default {
	globalData: {
		text: 'lxc'
	},
	methods: {
		··· ···
	}
}
</script>

赋值:

getApp().globalData.text = 'aliasName'

取值:

console.log(getApp().globalData.text) // 'aliasName'

页面渲染:
globalData的数据渲染,可以在页面的onShow生命周期进行操作。

Vuex
在Vuex中进行状态管理,这块之前的文章有讲过。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值