# 递归组件
自定义组件只需要简单配置即可递归使用。
在自定义组件的 .json
配置文件中,添加 name
字段,并指定名称,则可以在自定义组件中使用此字段的值作为组件名。如:
my-layer.json
{
"name": "my-layer",
"component": true
}
1
2
3
4
2
3
4
my-layer.js
Component({
properties: {
depth: {
type: Number,
value: 1
}
}
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
my-layer.qxml
<view class='my-layer'>
this is layer {{ depth }}
<my-layer qa:if='{{ depth > 1 }}' depth='{{ depth - 1 }}'></my-layer>
</view>
1
2
3
4
2
3
4
# 全局组件
app.json
中配置配置的组件,也可以作为递归组件使用。如:
app.json
{
"usingComponents": {
"global-layer": "./components/global-layer/global-layer"
}
}
1
2
3
4
5
2
3
4
5
global-layer.js
Component({
properties: {
depth: {
type: Number,
value: 1
}
}
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
global-layer.qxml
<view class='global-layer'>
this is layer {{ depth }}
<global-layer qa:if='{{ depth > 1 }}' depth='{{ depth - 1 }}'></global-layer>
</view>
1
2
3
4
2
3
4
以上是两种组件的使用使用如:
page.qxml
<view>
<my-layer depth='{{ 3 }}'></my-layer>
<global-layer depth='{{ 3 }}'></global-layer>
</view>
1
2
3
4
2
3
4
注意
使用递归组件时,需要注意使用条件控制递归,否则可能会出现无限循环,出现 “max stack size exceeded” 的错误。
←
→
在线客服