uni-app之组件/跳转传参/组件通信

组件

类似于微信小程序的模板,微信小程序里叫templates
在这里插入图片描述
test.vue

<template>
	<view>
		这是tst组件
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			};
		}
	}
</script>

<style>

</style>

在要是用的页面注册,import 和components

<script>
	import test from '../../components/test.vue'
	export default{
		data () {
			return {
			}
		},
		
	components:{
		test:test
	}
	}
</script>

在页面使用

<view>
		<test></test>
	</view>

跳转页面和传参

跳转到tabbar页面,注意不能传参

template

<button type="default" v-on:click="navi">跳转</button>

script

navi() {
				uni.switchTab({
					url: '../index/index?value=667'
				})
				}
t跳转到非tabbar页面并传参

由messaget跳转到detail
message的templates

<button type="default" v-on:click="navi2">跳转到非tabbar</button>

script,参数66666

				navi2() {
					uni.navigateTo
						
				({
						url: '../detail/detail/detail?value=666666'
					})
					}

detail页面接受参数,原理:onload函数的参数options就是上一个页面传的参数66666

onLoad(options) {
			console.log(options)
			
		},

组件通信

父组件(页面)发数据给子组件

(pages里的message.vue发给components里的test.vue),最后显示在message页面
meaasge.vue

<view>
		<test :title='b'></test>
	</view>

b是data里的变量

test.vue

<script>
	export default {
		data() {
			return {
				
			};
		},
		props:['title']
	}
</script>
<view>
		这是tst组件
		这是父组件传来的数据{{title}}
	</view>
子组件发给父

具体见教程p26
test.vue

methods:{
sendmun(){
this.$emit('myEven',this.num)
}

message.vue
<test @myEven=“getnum”>

同级组件传值()

test1,2两个components的组件传值,最终在页面体现
test1中的uni.on:
监听自定义事件。事件可以由 test2中的uni.#¥emit 触发(具体为点击按钮触发)。回调函数会接收 uni.#$emit 传递的参数。

test1

<template>
	<view>
		test1中的数据{{num}}
	</view>
</template>

<script>
	export default {
		data() {
			return {
				num:0
			};
		},
		methods:(){
		},
		created(){
			uni.$on('updatenum',num=>{
				this.num+=num
			})
		}
	}
</script>

<style>

</style>

test2

<template>
	<view>
		
<button type="default" v-on:click="addnum">修改test1中的数据</button>		
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			};
		
		},
		methods:{
			addnum(){
				uni.$emit('updatenum',10)
			}
		}
	}
</script>

<style>

</style>

页面

<test1></test1>
	<test2></test2>

效果
在这里插入图片描述

小结

三者并列
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp 是一个基于 Vue.js 的跨平台应用开发框架,它支持构建一次,多端部署(包括Web、App、小程序、H5等)。在 UniApp 组件之间的通信和数据传递是非常常见的。父向子组件传递参数可以通过以下几种方式进行: 1. **Props(属性)**:这是最常用的方式,父组件将数据作为属性(props)传递给子组件。例如: ```vue <template> <child-component :data="parentData" /> </template> <script> export default { components: { ChildComponent, }, data() { return { parentData: '这是父组件的数据', }; }, }; </script> ``` 在子组件,通过 `v-bind` 或者简写 `:` 来接收和使用这些数据。 2. **事件(Event Emitter)**:父组件可以触发一个事件,并将数据作为事件的参数传给子组件,子组件通过 `@event` 修饰符监听这个事件并处理数据。 ```vue <template> <button @click="handleParentData">传递数据</button> </template> <script> export default { methods: { handleParentData(data) { this.$emit('parent-data-changed', data); }, }, }; </script> ``` 在父组件,接受事件并设置数据: ```vue <template> <child-component :data="parentData" @parent-data-changed="updateData"></child-component> </template> <script> // ... methods: { updateData(newData) { this.parentData = newData; }, } </script> ``` 3. **Vuex(状态管理)**:如果需要更复杂的数据管理,可以使用 Vuex 存储共享状态,然后通过 actions 和 getters 在组件间传递数据。 相关问题: 1. 如何在 UniApp 处理多个属性的父子传递? 2. 如何避免在父组件频繁更新子组件的 props 导致性能问题? 3. 什么时候会考虑使用 Vuex 而不是直接通过 Props 传递数据?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值