uniapp 怎么封装组件(详细介绍)

  • Post author:
  • Post category:uniapp


最近研究了一下uniapp 的组件封装 以及 引入组件的页面(父级) 和 组件封装的页面(子级)的传参以及 事件交互 ,其实还是很简单的。



父级页(主要的动作有组件的引入和事件的触发)

<!--viwe部分-->
<template>
	<view class="page">
	<!--调用组件 组件的属性 数据属性前面加 : 符号 事件加 @ 符号 因为父级页面无法直接改变子页面参数 可通过ref属性可调用子页的方法改变参数值  -->
	<Assembly :TitleData="name" @trigger="GetData" ref="mySon">
	<!-- 如果父级页面需要在组件中间加入代码 需要子页 插入的地方加上<slot></slot> -->
	</Assembly>
	<!--调用组件-->
	</view>
</template>	
<!--js部分 在这里声明注册组件-->
<script>
  //只要组件安装在项目的components目录下或uni_modules目录下,并符合components/组件名称/组件名称.vue目录结构。就可以不用引用、注册,直接在页面中使用。
  import Assembly from '@/components/assembly'
  export default {
    components: {
      Assembly 
    },
	data() {
		return {
			name:"" //这里的数据类型根据子级页定义
		}
	},
	methods: {
		GetData(){
			console.log(触发事件了)
			//这里触发父级事件 通过绑定名称mySon 直接执行子页方法foumr() 
			t.$refs.mySon.foumr();
		}
	}
  }
</script>

到这里 组件的调用 引入 注册 以及 数据和事件 基本 搞定了 然后来看下面



子页面(组件的存放和组件事件处理)

<template>
	<view class="wrap">
		<view @click="SetName">姓名:{{TitleData}}</view>
		<view>性别:{{gender}}</view>
		<!--使用slot组件声明插入代码的位置-->
		<slot></slot>
	</view>	
</template>
<script>
export default {
  //需要给父页传值的参数都放在props里面 每个参数作为一个对象 都需要声明 传值的类型 type 以及内容 default 没有默认值时为空 type不可为空 ,如参数的值无需 交互 可直接写在 data=>return 里面
  props: {
  	//这里定义的参数名称 在父页作为组件的属性用来绑定参数
	TitleData:{
		type:Array,
		default:""
	}
  },
  data() {
    return {
		gender:"男女"
	};
  },
	
  methods: { 
	SetName(){
		// 在这里定义父页触发组件事假的属性名  trigger  后面可以传值 index
		this.$emit('trigger',index)
	},
  },
};	
</script>



版权声明:本文为changshataofan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。