配合官方文档一起使用,效果更加 —— 传送门
自定义组件,类似于前面说到过的模板 template
,但是比模板更加灵活,自定义组件可以定义自己的属性,使用起来也更加方便,但是用起来还是会有些限制,比如在自定义组件中我们只能在自定义组件中修改样式(wxss),不能在渲染界面进行更改样式等等。但是自定义组件有一个很大的好处,我们可以自己添加其他的组件,添加方法等等。总的来说,这也是一个很好用的组件。
tips:这样做,和新建一个 page 是没有区别的,但是不同的点是在 json 文件和js文件,不同点是多了如下一部分的代码
js文件
Component({
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: {
},
/**
* 组件的方法列表
*/
methods: {
}
})
json文件
{
"component": true,
"usingComponents": {}
}
这里的json 文件必须设置为 true
在 mybox.wxml 文件与 mybox.wxss 设置两个盒子
<view class='outter' >
<view class='inner'>
view>
view>
.outter{
width: 200px;
height: 200px;
background: yellow;
}
.inner{
width: 100px;
height: 100px;
background: red
}
{
"usingComponents": {
// "创建的组件的名称":"路径"
"mybox":"/component/mybox/mybox"
}
}
tips:
1.语法示范—— 回到自定义组件中,在mybox.js文件下的 properties中,创建对象,语法如下:
properties:{
属性名称: {
type: 数据类型,String Number Boolean Object Array
value: 一个初始化的默认值
}
}
Component({
/**
* 组件的属性列表
*/
properties: {
innerText:{
type:String,
value:"112233"
},
outterSize:{
type:Number,
value:200
}
},
/**
* 组件的初始数据
*/
data: {
},
/**
* 组件的方法列表
*/
methods: {
}
})
<view class='outter' style="width:{{outterSize}}px;height:{{outterSize}}px">
<view class='inner'>
{{innerText}}
view>
view>
<mybox innerText="内部盒子" outterSize="400">mybox>
效果图:
通过 slot 标签才可以添加组件
Component({
options:{
multipleSlots:true
},
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: {
},
/**
* 组件的方法列表
*/
methods: {
}
})
设置纵向布局,并结合全局的样式 container mypage.wxss
.body{
width: 100%;
display: flex;
}
.left-group{
flex: 1;
background: yellow;
}
.right-group{
flex: 1;
background: green;
}
mypage.wxml
<view class='container'>
<view class='header'>
这是header部分
view>
<slot>slot>
<view class='body'>
<view class='left-group'>
<slot name='left'>slot>
view>
<view class='right-group'>
<slot name='right'>slot>
view>
view>
view>
回到展示界面 —— index.wxml
<mypage>
<view slot='left'>我是左边view>
<view slot='right'>我是右边view>
mypage>
展示效果:
{
"component": true,
"usingComponents": {}
}
component 一定要设置为 true
{
"usingComponents" :{
"子文件的名称": "路径";
}
}
properties:{
属性名称: {
type: 数据类型,String Number Boolean Object Array
value: 一个初始化的默认值
}
}
properties:{
options:{
multipleSlots:true
},
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有