当功能多了后,自然而然就会有需求要求实现功能的复用,这个时候就需要把功能模块抽象成自定义组件,以便在不同的页面中复用。但是微信官方的文档写的有点简单,看的有点懵,折腾了好久终于算是会用了,写个记录吧。
自定义组件介绍
简单介绍:
开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用.也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护.
创建自定义组件
先说下我要实现的组件的样子,大概就是一个面板,有左右两半,可以传入不同的值来显示并复用。大概效果如下很简单的一个东西(这里只是举例用):
1.首先在最外层的 components
文件夹中新建一个文件名命名为你要创建的组件的名字 比如我要做个通用的list面板
我就建了个文件夹 listPanel
当然这个名字随意的。
然后在这个文件夹下选择 新建Component
输入名字即可。如果你不是用的微信开发工具,自己手动建立相关的文件即可。
自定义组件需要4个文件 如下:
2.修改 listPanel.json
文件, 指定其中的 component 属性 为 true
|
|
3.编辑 listPanel.js
文件
|
|
上面的属性是我大概组件需要的,你可以根据需要写自己的。因为我的组件需要两部分动态显示,所以我设置了2个属性值。
3.编辑 listPanel.wxml
增加一点很简单的代码
|
|
4.编辑 listPanel.wxss
稍微增加一点样式
|
|
5.然后找到最外面的 app.json
文件 找到其中的 usingComponents
属性,在其中注册刚写好的组件
|
|
前面的Key是组件的名字,等会在别的wxml中使用.
6.然后来测试下,在index页面中,修改 index.wxml
增加组件的使用
|
|
当然你也可以设置更多的属性和更多的控制,以达到组件可以更灵活的复用。
组件间通信
父组件可以直接设置子组件中的数据绑定,如果子组件要向父组件来传递数据的话就有点麻烦了,需要使用事件。
1.在父组件中创建监听 在本次的例子中 pages/index/index.wxml
就相当于父组件了
修改 <listPanel left_data="Hello" right_data="World"></listPanel>
这一行,在其中添加事件监听
|
|
或者
|
|
这两种写法都可以。
然后在 pages/index/index.js
中写好对应的js方法
|
|
2.触发事件
修改 listPanel.wxml
文件 增加一个点击事件(也可以用别的事件,点击事件测试比较简单)
|
|
然后编辑 listPanel.js
文件,增加对应的处理方法
|
|
3.然后来点击测试下
如果出现下面的结果就成功了