小程序的组件化开发 父子传值

小程序的组件化开发

【最下面的父传子讲解了组件中id的用法】

参考:
https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html
组件化开发我们应该在miniprogram/components目录下创建文件夹
在这里插入图片描述
组件化开发跟小程序单页面开发还是有点区别:
如何在页面中使用组件:

  1. 在页面的json文件中
 "usingComponents": {
    “a”:“组件对应的路径”
    随便起名
  }

2.再页面的wxml中直接使用:

<a></a>
<productList id="productList"></productList>

在这里插入图片描述

组件化开发js文件中:created(){} attached(){} detached(){}

组件中created(){} attached(){} detached(){}这些事件是和data{}同一级写
自定义的函数写在methods:{}中

data:{},
created(){},
attached(){},
methods{}
  1. 组件实例刚刚被创建好时, created 生命周期被触发 但是不能操作data中的数据
  2. 在组件完全初始化完毕、进入页面节点树后, attached 生命周期被触发。(一般都在这个函数中操作函数)
  3. 在组件离开页面节点树后, detached 生命周期被触发。(离开组件执行的函数)

父子传值

1. 子传父

子传父数据
思路:
在父组件js中创建一个自定义方法:categoryChangeEvent()
当触发父组件中子组件的事件:bind:categoryChangeEvent的时候,就会触发父组件js中的categoryChangeEvent事件,
怎么在子组件中触发bind:productList呢:使用this.triggerEvent(‘categoryChangeEvent’,{}) 对象随意传不传都行

写法:
父组件wxml:<scrollCategory bind:categoryChangeEvent="categoryChangeEvent"></scrollCategory>
父组件js:categoryChangeEvent(e){ console.log(e.detail.a) }
子组件js:this.triggerEvent('categoryChangeEvent',{ a:this.data.categories[curIndex].title })

2.父传子

父传子就简单多了
1.在父组件中先使用子组件
例如:
思路:
在夫组件中已经引入子组件:<productList></productList >
可以给productList 一个id或者class <productList id=“productList ”>
然后再子组件中自定义一个方法例如:fillData(e){},给方法一个形参
再夫组件js中调用this.selectComponent(’#productList ‘)获取到子组件【#productList 就是组件中的id名,也可以用class那么#就要变成 .
获取到子组件就可以调用子组件中的方法,所以我们可以把父组件中的数据调用子组件的自定义方法赋值过去。
写法:
父组件wxml: <productList id=“productList ”></productList >
父组件js:例如:this.selectComponent('#productList').fillData(res.data)
子组件:fillData(listData){ }

wepy 是一个小程序组件开发框架。 组件 小程序支持js模块,但彼此独立,业务代码与交互事件仍需在页面处理。无法实现组件的松耦合与复用的效果。 例如模板A中绑定一个bindtap="myclick",模板B中同样绑定一样bindtap="myclick",那么就会影响同一个页面事件。对于数据同样如此。因此只有通过改变变量或者事件方法,或者给其加不同前缀才能实现绑定不同事件或者不同数据。当页面复杂之后就十分不利于开发维护。 因此wepy让小程序支持组件开发组件的所有业务与功能在组件本身实现,组件组件之间彼此隔离,上述例子在wepy的组件开发过程中,A组件只会影响到A绑定的myclick,B也如此。 wepy编译组件的过程如下: 组件引用 当页面或者组件需要引入子组件时,需要在页面或者script中的components给组件分配唯一id,并且在template中添加标签,如index.wpy。 页面和组件都可以引入子组件,引入若干组件后,如下图: Index页面引入A,B,C三个组件,同时组件A和B又有自己的子组件D,E,F,G,H。 项目目录结构 ├── dist                   微信开发者工具指定的目录 ├── node_modules            ├── src                    代码编写的目录 |   ├── components         组件文件夹(非完整页面) |   |   ├── com_a.wpy      可复用组件 a |   |   └── com_b.wpy      可复用组件 b |   ├── pages              页面文件夹(完整页面) |   |   ├── index.wpy      页面 index |   |   └── page.wpy       页面 page |   └── app.wpy            小程序配置项(全局样式配置、声明钩子等) └── package.json           package 配置 主要解决问题 开发模式转换 支持组件开发 支持加载外部 NPM 包 单文件模式,使得目录结构更加清晰 默认使用 babel 编译,支持 ES6/7 的一些新特性 针对原生 API 进行优 标签:wepy  小程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值