2019独角兽企业重金招聘Python工程师标准>>>

前言

组件引用、循环渲染、computed计算属性、watch监听 官方文档说的很清楚。基本照着看看就能理解,本篇重点说父组件子组件相互传值交互的问题。这里我感觉还是有点绕的。

Props传值

  • 静态传值

    • 静态传值为父组件向子组件传递常量数据,因此只能传递String字符串类型。具体方法为在父组件引用的 需要传值的组件标签中 这种传值是静态的一次性的 伪代码如下:
<!--父组件template 中向引用的子组件child传递propData参数-->
<template><child propData="传递的值"></child>
</template>
<!--子组件如下方式接收-->
export default class mo extends wepy.component {props = {// 静态传值必须对参数进行String 类型声明 后面必须是String 而且只能传递字符串propData: String};onLoad() {// 打印出来为 “传递的值”  也就是说propData传递到了组件的data={propData:'传递的值',...}// 因此子组件的视图层 可以通过 插值标签{{propData}} 进行渲染console.log(this.propData)};
}

总结:静态传值 只能父到子 只能是字符串 在父组件引用的子组件中 参数名='参数值' 子组件中props={参数名:String}值会被放到data 中 通过 {{参数名}}或者 this.参数名可以引用该值

  • 动态传值

    • 动态传值是指父组件向子组件传递动态数据内容,父子组件数据完全独立互不干扰。但可以通过使用.sync修饰符来达到父组件数据同步绑定至子组件的效果,也可以通过设置子组件propstwoWay: true来达到子组件数据同步绑定至父组件的效果。那如果既使用.sync修饰符,同时子组件props中添加的twoWay: true时,就可以实现数据的双向绑定了。

规则

  • 在父组件data={}中声明参数 eg. data={ 参数名:'dynamicVal'} 父组件引用的子组件中 <syncChild :传递名='参数名'/> 如果传递名后跟.sync 表示父组件的传值实时同步到子组件中去。
  • 在子组件的props={} 声明 props={传递名:{type: default: twoWay:}} 其中type 必选 其他非必选。 default 代表默认值 twoWay 表示实现的效果跟 父组件中的.sync正好相反,默认值为false。如果 传递名在父组件中有 .sync后缀同时在子组件propstwoWaytrue 则实现双向数据绑定效果

伪代码如下

  • 父组件
<template><view>这是一个数据动态绑定测试父组件</view><view>测试简单动态绑定</view><!-- 键 childParam 需要在子组件props中声明  值childParamVal 需要在父组件data={} 中显式声明      this.childParamVal 自己可以尝试 会未定义--><child :childParam="childParamVal"></child><!--父组件 值同步到子组件  添加 .sync  即 子组件的syncText 随着 父组件改变而单向改变--><view>测试父到子单向绑定</view><view> 输入单向绑定数据:<input type="text" value="{{syncText}}" @input="inputChange"/></view><syncChild :syncText.sync="syncText" :twoWayText="twoWayText"></syncChild><view>父组件的twoWayText 以子组件为准:{{twoWayText}}</view>
</template><script>import wepy from 'wepy'import Child from '@/components/child'import SyncChild from '@/components/syncChild'export default class BindData extends wepy.page {props = {}components = {child: Child, syncChild: SyncChild}configs = {}methods = {// 输入框事件 将输入值值赋给动态传值参数inputChange(e) {this.syncText = e.detail.value}}onLoad() {this.childParamVal = [{id: 0,name: 'Alon',alive: false}, {id: 1,name: 'Kart',alive: true}, {id: 2,name: 'Peter',alive: false}]console.log(this.childParamVal)}data = {// 父到子实时单向动态传值声明syncText: '',// 子到父实时单向动态传值声明twoWayText: '',childParamVal: [{id: 0,name: 'jack',alive: false}, {id: 1,name: 'tom',alive: true}, {id: 2,name: 'Sam',alive: false}]}// 监听值变化  子组件 twoWayText 对父组件的影响watch = {twoWayText(newVal, oldVal) {console.log(`新值:${newVal} -->  旧值:${oldVal}`)}}}
</script><style></style>
  • 静态传值子组件
<template><view>子组件接收childParam值<block wx:for="{{childParam}}" wx:for-index="index" wx:for-item="item" wx:key="key"><view><text>{{index}}. 姓名:{{item.name}} 是否存在:{{item.alive}}</text></view></block></view><view></view><view></view><view></view>
</template><script>import wepy from 'wepy'export default class Child extends wepy.component {props = {childParam: {// 类型为Objecttype: Object}}components = {}data = {}configs = {}methods = {}onLoad() {console.log(this.childParam)}}
</script><style></style>
  • 动态传值子组件
<template><view>测试 父到子单向同步绑定</view><view>子组件输出单向绑定数据:<text>{{syncText}}</text></view><!--子组件 单项绑定数据到父组件--><view>子组件单项绑定数据到父组件<text>{{twoWayText}}</text></view>
</template><script>import wepy from 'wepy'export default class SyncChild extends wepy.component {props = {// 单向动态传值声明syncText: String,twoWayText: {type: String,twoWay: true}}components = {}data = {}configs = {}methods = {}onLoad() {this.twoWayText = '子组件赋值'}}
</script><style scoped></style>

总结 prop 传值比原生的好用了不少 而且可以实现双向绑定 但是规则也需要更多操作来理解 其实<repeat></repeat> 也可以实现数据绑定到子组件 但是是静态的 一次性的 子组件props 不需要声明 也没有 .sync twoWay的概念

转载于:https://my.oschina.net/10000000000/blog/1833801

微信小程序组件化开发框架wepy 学习(三)相关推荐

  1. 微信小程序组件化开发框架wepy 学习(二)

    2019独角兽企业重金招聘Python工程师标准>>> 文件 1.文件结构 文件结构类似VUE文件 扩展名为 .wpy <template><!--渲染模板 对应w ...

  2. 【腾讯Bugly干货分享】打造“微信小程序”组件化开发框架

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/2nQzsuqq7Avgs8wsRizUhw 作者:Gc ...

  3. 微信小程序 - 组件化开发

    微信小程序 -- 组件化开发,总结一下开发思路及过程: 组件,类似于页面,一个自定义组件由 json wxml wxss js 4个文件组成. 1.首先,在 miniprogram 文件夹下,创建一个 ...

  4. python组件化软件github_GitHub - cqingt/wepy: 小程序组件化开发框架

    WePY 2 (alpha) 介绍 WePY (发音: /'wepi/)是一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序.框架的细节优化,Promis ...

  5. 微信小程序-组件化开发(上)

    微信小程序(以下简称"小程序",版本)虽然默认定义了很多有用的组件,但是在开发小程序过程中,往往需要自定义业务组件. 而小程序开发者文档中却未对自定义组件给出很好的解决方案或示例. ...

  6. 微信小程序组件化的解决方案

    从小程序基础库版本 1.6.3 开始,小程序支持简洁的组件化编程.查看自己使用的小程序基础库版本,可以通过在开发者工具右侧点击详情查看: 最基本的组件 小程序的组件,其实就是一个目录,该目录需要包含4 ...

  7. [微信小程序]组件化开发,以一个自定义模块框组件当做示例(附完整示例代码和效果图)

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 自定义组件我把它分为简单的三个步骤, 1.创建组件 --- 2.编写组件  ---   3.调用,使用 ...

  8. python组件化软件github_GitHub - 872409/wepy: 小程序组件化开发框架

    小程序框架wepy文档 扫码加入体验交流群. 快速入门 项目创建与使用 安装wepy 以下安装都通过npm安装 安装 wepy 命令行工具. npm install wepy-cli -g 在开发目录 ...

  9. 微信小程序组件化 快速实现可用模态窗

    纵观现代前端框架中(不论ng react vue ) 基本四架马车 声明式渲染 路由 组件化 状态管理. 反观小程序开发环境 缺失蛮多特性的 好在 11月初微信团队,发布了官方的component 化 ...

最新文章

  1. php bootstraptable分页,Bootstrap table分页问题汇总【附答案代码】
  2. SpringBoot+mongoDB实现id自增
  3. leetcode算法题--不同的二叉搜索树 II
  4. 国家电网是“围城”?辞职吗?
  5. P2472-[SCOI2007]蜥蜴【网络流】
  6. 中文python笔记_python 中文编码笔记
  7. testlink mysql配置_TestLink安装配置手册
  8. SweetAlert用法
  9. 【opencv学习】完全基于opencv的双目景深与测距的实现
  10. php发送邮件时间间隔,在使用phpmailer群发邮件时如何设置发送的时间间隔?
  11. shark恒破解笔记6-摆脱NAG
  12. 量化投资学习——多因子权重组合优化问题
  13. 广州找工作指南:避雷公司名录及优秀公司名录
  14. QT QFileDialog文件对话框
  15. 误差理论与数据处理(一)
  16. 微信开发者账号APPID过久不用被冻结解决方案
  17. 自己写的PDF转JPG的程序
  18. 2411681-89-3,Thalidomide-O-amido-PEG4-azide是一种PROTAC连接剂,通过点击化学与炔烃或DBCO、BCN连接的分子反应
  19. Java—String类的intern方法的学习
  20. Java闭关修炼64课 很适合新手学习的JAVA视频教程

热门文章

  1. 服务器安装360文档卫士,360文档卫士
  2. 如何设计 QQ、微信等第三方账号登陆 ?(附表设计)
  3. innodb buffer pool管理--数据页的访问
  4. 这次!38K,妥妥的
  5. 基于UMDF2将 WPP 软件跟踪添加到 Windows 驱动程序
  6. UVM--TLM2.0通信
  7. 工作狂小废物的桌面[51CTO博客接龙桌面秀]
  8. NB-IoT和eMTC有什么区别?
  9. 华为鸿蒙os手机计划表,华为为什么还没有推出鸿蒙OS智能手机的计划
  10. python如何读取数据保存为新格式_Python -- 数据加载、存储与文件格式