uniapp框架组件、props对组件传值、对组件绑定事件的使用、子组件给父组件传值

新建组件的方式,在components目录下新建组件,然后就能在pages页面当中直接使用该组件
在这里插入图片描述

test.vue

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

<script>
	export default {
		name:"test",
		data() {
			return {
				
			};
		}
	}
</script>

<style lang="scss">

</style>

home.vue:

<template>
	<view>
		<uni-icons type="search" size="17"></uni-icons>
		<test></test>
	</view>
	
</template>

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

<style lang="scss">

</style>

页面效果如下:
在这里插入图片描述

props的作用就是可以从外部的标签当中传值到标签当中的内容

props的使用方法:在子组件当中,props是一个对象,对象当中的数据也是一个对象,该有两个属性,type是数据的类型,default是数据的默认值,当父组件没有传值时使用默认值。在vue.js当中props是一个数组,并且里面的数据是字符串类型

在test.vue组件当中

<template>
	<view :style="{'color':yanse}">
		{{msg}}
	</view>
</template>

<script>
	export default {
		props:{
			yanse:{
				type:String,
				default:'red'
			}
		},
		name:"test",
		data() {
			return {
				msg:'test'
			};
		},
		
	}
</script>

<style lang="scss">

</style>

在home.vue页面当中

<template>
	<view>
		<uni-icons type="search" size="17"></uni-icons>
		<test :yanse="'yellow'"></test>
		{{msg}}
	</view>
	
</template>

<script>
	export default {
		data() {
			return {
				msg:'hello'
			};
		},
		methods:{
			
		}
	}
</script>

<style lang="scss">

</style>

页面效果:

在这里插入图片描述

在属性的值前面加一个:代表着引用变量的值

对组件绑定事件:

<template>
	<view :style="{'color':yanse}" @click="test">
		{{msg}}
	</view>
</template>

<script>
	export default {
		props:{
			yanse:{
				type:String,
				default:'red'
			}
		},
		name:"test",
		data() {
			return {
				msg:'test'
			};
		},
		methods:{
			test:function(){
				console.log('test');
			}
		}
	}
</script>

<style lang="scss">

</style>

动态设置style属性:

<view class="nr" v-for="(item,index) in classification" :key="index" :style="'color:'+item.color">

子组件传父组件:主要通过this.$emit(event,message)
$emit 绑定一个自定义事件event,当这个这个语句被执行到的时候,就会将参数message传递给父组件,父组件通过@event监听并接收参数。

子组件:

<view v-for="(item,index) in fenlei" :key='index' v-on:click="dianji(index)">
			<view class="text" :style="'color:'+item.color">
				{{item.text}}
			</view>
		</view>
dianji:function(e){
	var that = this;
	
	console.log(e);
	this.$emit('fenleiEvent',e);
	
}

父组件:

<fenlei @fenleiEvent='show'></fenlei>

show(e){
	console.log('父组件接收:')
		console.log(e);
	}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在uni-app中,父组件间的数据传递可以通过props属性来实现。当组件需要向父组件传值时,可以在组件中通过$emit方法触发一个自定义事件,父组件可以监听这个事件并在回调函数中获取到组件传过来的数据。 具体实现步骤如下: 1. 在父组件使用v-for循环渲染多个组件,并通过props属性将需要传递的数据传递给组件。 2. 在组件中定义一个名为valueChange的自定义事件,并在需要传递数据的地方使用$emit方法触发这个事件,并将需要传递的数据作为参数传入。 3. 在父组件中监听组件的valueChange事件,并在回调函数中获取到组件传过来的数据。 代码示例: 父组件: ``` <template> <div> <child-component v-for="(item, index) in list" :key="index" :value="item" @valueChange="handleValueChange"></child-component> </div> </template> <script> import childComponent from '@/components/child-component.vue'; export default { components: { childComponent, }, data() { return { list: [ { name: '张三', age: 18 }, { name: '李四', age: 20 }, { name: '王五', age: 22 }, ], }; }, methods: { handleValueChange(data) { console.log(data); }, }, }; </script> ``` 组件: ``` <template> <div @click="handleClick">{{ value.name }}-{{ value.age }}</div> </template> <script> export default { props: { value: { type: Object, default: {}, }, }, methods: { handleClick() { this.$emit('valueChange', this.value); }, }, }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值