跳至主要內容

uni-app组件

白日梦想家yy...大约 2 分钟

uni-app组件

uni-app基本组件

uni-app自定义组件

  • 自定义组件需遵从easycom规范(创建components/组件名称/组件名称.vue),就可以直接使用
  • 当自定义父子组件需要传递数据时,父组件向子组件传递需要通过props对象方法(需要在子组件里通过props对象自定义属性)
  • 示例:
//子组件
//1.首先创建自定义组件
//2.在script标签内设定props对象方法,并在props里嵌套自定义对象
props:{
//对象1
			color:{
				type:String,   //类型为字符串
				default:'while'   //默认属性值
			},
  //对象2
			size:{
				type:String,   //类型为字符串
				default:'70px'   //默认属性值
			}
		},
//3. 子组件内调用对象方法
<template>
	<view>
                //background和fontSize是uni-app的属性,不是自定义,值是调用的对象方法
		<view :style="{background:color,fontSize:size}">
			11111111
		</view>
	</view>
</template>

//4.父组件调用子组件对象方法
<template>
	<view>
		<card color="red"></card>
		<card color="blue" size="14px"></card>
		<card ></card>
	</view>
</template>
  • 子组件向父组件传递数据可以通过自定义事件,父组件自定义事件,子组件触发父组件定义的事件(this.$emit('父组件的自定义事件')),并传递数据
  • 示例:
//1.父组件里自定义事件,并给子组件标签设置事件
<script>
	export default {
	 //通过在methods里自定义事件方法
		methods: {
			fclick(){
				console.log('我是父级 );
			}
		}
	}
</script>

<template>
	<view>
    //父组件里的子组件标签设置事件
		<card @fclick="fclick"></card>
	</view>
</template>

//2.子组件里自定义事件
<script>
	export default {
		name:"card",
		methods: {
        //
			cardclick (){
            //通过此方法子组件自定义事件可以和父组件自定义事件绑定
				this.$emit('fclick');
			}
		}
	}
</script>

<template>
	<view>
    //子组件里调用自定义事件,来触发父组件的自定义事件
		<view @click="cardclick">
			11111111
		</view>
	</view>
</template>
  • 子组件可以定义插槽,让父组件自定义要显示的内容,不用在子组件定义显示的内容
  • 示例:
//没有定义插槽,父组件无论如何更改内容,显示的还是子组件定义的内容
<template>
	<view>
		<view :style="{background:color,fontSize:size}" @click="cardclick">
			111
		</view>
	</view>
</template>

//定义插槽后,子组件不用定义内容,父组件可以自定义内容
<template>
	<view>
		<view :style="{background:color,fontSize:size}" @click="cardclick">
			<slot></slot>
		</view>
	</view>
</template>
上次编辑于:
贡献者: mygit