uniapp封装组件及父子组件传值

1. 封装子组件 (子组件通过"props"接受父组件传的值,在子组件中定义props属性,type可以自定义类型(但是必须和父组件中的数据类型一致,否则会报错),default是默认值。)

<template>
	<div class="adsList">
		<div class="cardItem" v-for="item in cardList" :key="item.index">
			<div class="cardLogo">
				<div class="adsLogo">
					<image :src="item.icon" class="adsIcon"></image>
					<p>{{item.name}}</p>
				</div>
				<checkbox-group @change="checkChange" v-if="cardType=='choose'">
					<checkbox :checked="item.checked" :value="item.name" />
				</checkbox-group>
				<image src="../../static/imges/icon/write.png" class="editIcon" @click='toEdit(item)' v-if="cardType=='edit'"></image>
			</div>
			<div class="adsInfo">{{item.con?item.con:'----'}}</div>
		</div>
	</div>
</template>

<script>
	export default {
		props: {
			cardList: {
				type: Array,
				default () {
					return []
				}
			},
			cardType: {
				type: String,
			},
			used:{
				type: Boolean
			}
		},
		data() {
			return {}
		},
		methods: {
			checkChange(e) {
				let val = e.detail.value;
				console.log(val, 'ppppppppp')
			},
			toEdit(item) {
				console.log(this.$props.used,'66666666666')
				uni.navigateTo({
					url: `/pages/content/editAds/index?info=${JSON.stringify(item)}&used=${this.$props.used}`
				});
			}
		}
	}
</script>

<style lang="less" scoped>

</style>

  2. 在父组件中引入,注册,传值 ( 父组件通过“:”传值 )

<template>
	<div class="wrapper">
		<div class="adsHead">
			<div class="adsRead">
				<checkbox-group @change="checkChange">
					<checkbox :checked="checked" />
				</checkbox-group>
				<p>Address only</p>
			</div>
			<div class="adsSearch">
				<input type="text" v-model="searchVal" @input="changeVal" class="searchInp" />
				<image src="../../../static/imges/icon/searchAds.png" class="searchIcon" />
			</div>
		</div>
		<adsCard :cardList='cardList' cardType='edit' :used='used' />
	</div>
</template>

<script>
	import adsCard from '../../../components/adsCard/index.vue'
	export default {
		components: {
			adsCard
		},
		data() {
			return {
				checked: false,
				used: false,
				searchVal: '',
				cardList: [{
						icon: '../../../static/imges/icon/btg.png',
						name: 'BTG',
						con: '14654986535498645385',
						checked: false
					},
					{
						icon: '../../../static/imges/icon/CCL.png',
						name: 'ETH',
						con: '',
						checked: false
					},
					{
						icon: '../../../static/imges/icon/OKB.png',
						name: 'BTG',
						con: 'dfghjklkjcgfdtgfhjk',
						checked: false
					}
				]
			}
		},
		onReady() {
			this.setTitle(this.$t("Users.address"))
		},
		methods: {
			changeVal() {
				this.searchVal = e.target.value
			},
			checkChange(e) {
				this.checked = !this.checked
			},
		}
	}
</script>

<style lang="less" scoped>

</style>

  

原文地址:https://www.cnblogs.com/ahalvxiaobu/p/14148539.html