小程序基础 (三)

5. 使用 slot

  • 使用单个slot
// 页面
<Test><view>自定义内容</view>
</Test>// 组件
<view><view>前面的内容</view><slot></slot><view>后面的内容</view>
</view>
  • 使用多个slot - 具名
// 页面
<Test><view slot='n1'>自定义内容1</view><view slot='n2'>自定义内容2</view>
</Test>// 组件
<view><slot name='n1'></slot><slot name='n2'></slot>
</view>
  • 想要使用多个slot ,一定要添加这个配置
Component({// slot 配置options: {multipleSlots: true},.....
}
vue  => 页面组件   获取数据  ajax  => 公共组件   复用的ui模块小程序 => 页面   获取数据  ajax   (很多钩子好好学习)   ★=> 组件    复用的ui模块  

6. 定义段与示例方法

Component构造器可用于定义组件,调用Component构造器时可以指定组件的属性、数据、方法等。

定义段类型是否必填描述
properties(★)Object Map组件的对外属性,是属性名到属性设置的映射表,参见下文
data(★)Object组件的内部数据,和 properties 一同用于组件的模板渲染
observers(★)Object组件数据字段监听器,用于监听 properties 和 data 的变化,类似vue里面的 watch
methods(★)Object组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用,参见 组件事件
createdFunction组件生命周期函数,在组件实例刚刚被创建时执行,注意此时不能调用 setData ,参见 组件生命周期
attached(★)Function组件生命周期函数,在组件实例进入页面节点树时执行,参见 组件生命周期
readyFunction组件生命周期函数,在组件布局完成后执行,参见 组件生命周期
movedFunction组件生命周期函数,在组件实例被移动到节点树另一个位置时执行,参见 组件生命周期
detachedFunction组件生命周期函数,在组件实例被从页面节点树移除时执行,参见 组件生命周期
// observers 监听
observers :{name(newVal) {console.log('新值', newVal)},obj(newVal) {console.log('新值obj', newVal)},'obj.num'(newVal) {console.log('新值obj的num', newVal)}},const { obj } = this.dataobj.num = 100this.setData({name :'大马哥',obj,})   

7. 组件通信

  • 父传子 : 父组件通过属性传递给子组件数据
  • 子传父 : 子组件通过事件传递给父组件数据

7.1 父传子

// 父
// 第一步 :父传子
<Test msg='父的数据'></Test>// 子
// 第二步 : 声明properties: {msg : String,msg: {type: String,value: ''}},// 第三步 : 使用
// 使用1 : 读取显示
<view> 父传子 : {{ msg }} </view>
// 使用2 : 打印attached() {console.log(123, this.properties.msg)}

7.2 子传父

// 父
// 第一步 : 父准备好一个方法myTap(e) {console.log('父的方法:', e.detail)}
// 第二步 : 通过自定义事件传递给子组件
<Test bindmytap='myTap'></Test>// 子methods: {fn() {// 第三步 : 子组件触发this.triggerEvent('mytap', '子的数据')}},

7.3 命名规则

  • 使用组件 使用中划线的方法
// 引入
"usingComponents": {"nav-header" : "/components/NavHeader/NavHeader"
}
// 使用1
<nav-header></nav-header>
// 使用2
<my-component></my-component>
  • 属性的方式也是要中划线的方法
<nav-header  prop-a='aa' prop-b='bb'></nav-header>
<my-component my-class='cls'></my-component>

小程序生命周期

1. 应用生命周期

  • 应用生命周期链接
属性类型默认值必填说明
onLaunchfunction监听小程序初始化。
onShowfunction监听小程序启动或切前台。
onHidefunction监听小程序切后台。
onErrorfunction错误监听函数。
onPageNotFoundfunction页面不存在监听函数。
App({// 1. 应用第一次启动的时候会触发onLaunch() {// 在应用第一次启动的时候 获取用户的个人信息console.log('onLaunch')},// 2. 应用 被用户看到onShow() {// 对应用的数据或者页面效果 重置console.log('onShow')},// 3. 应用被隐藏onHide() {// 暂停或者清除定时器console.log('onHide')},// 4. 应用的代码发生了报错的时候 就会触发onError(err) {// 在应用发生代码报错的时候  收集用户的错误信息 通过异步请求 将错误的信息发送后台},// 5. 应用找不到就会触发onPageNotFound(err) {// 编译模式下演示// 如果页面不存在了, 通过js的方法来重新跳转页面// 1. pages/two/two在pages最前面// 2. 添加编译模式// 3. 把这个路径删掉console.log('找不到页面',err)}
})

2. 页面生命周期

  • 页面生命周期链接
属性类型说明
dataObject页面的初始数据
onLoadfunction生命周期回调—监听页面加载
onShowfunction生命周期回调—监听页面显示
onReadyfunction生命周期回调—监听页面初次渲染完成
onHidefunction生命周期回调—监听页面隐藏
onUnloadfunction生命周期回调—监听页面卸载
onPullDownRefreshfunction监听用户下拉动作
onReachBottomfunction页面上拉触底事件的处理函数
onShareAppMessagefunction用户点击右上角转发
onPageScrollfunction页面滚动触发事件的处理函数
onResizefunction页面尺寸改变时触发,详见 响应显示区域变化
onTabItemTapfunction当前是 tab 页时,点击 tab 时触发
Page({/*** 生命周期函数--页面加载的时候触发*/onLoad: function(options) {// 发送网络请求},/*** 生命周期函数--页面显示的时候触发*/onShow: function() {},/*** 生命周期函数--页面初次渲染完成的时候触发*/onReady: function() {// 渲染完成},/*** 生命周期函数--页面隐藏的时候触发*/onHide: function() {},/*** 生命周期函数--页面卸载的时候触发*/onUnload: function() {wx.redirectTo({url: '/pages/one/one'})},/*** 页面相关事件处理函数--监听用户下拉动作* 配合 配置 :  "enablePullDownRefresh": true*/onPullDownRefresh: function() {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function() {},/*** 用户点击右上角分享*/onShareAppMessage: function() {},// 滚动页面onPageScroll(e) {console.log(e.scrollTop)},/***  监听尺寸变化*/onResize() {console.log('尺寸变化了')// 页面配置 "pageOrientation" :"auto"},/*** 当前是 tab 页时,点击 tab 时触发*/onTabItemTap(res) {// 每个tab对应的页面都要点击}
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PyQt5】QT designer + eclipse 集成开发

【写在前面的话】 考虑将pyqt5的界面开发qt designer 集成在eclipse中&#xff0c;并且&#xff0c;不利用cmd命令行进行转换。 【工具】 1、pyqt5 2、qt designer 3、eclipse pydy 【步骤】 1、首先配置Qt designer。 菜单 run-->external Tools-->External tools confi…

iOS UIlabel文字排版(改变字间距行间距)分类

在iOS开发中经常会用到UIlabel来展示一些文字性的内容&#xff0c;但是默认的文字排版会觉得有些挤&#xff0c;为了更美观也更易于阅读我们可以通过某些方法将UIlabel的行间距和字间距按照需要调节。 比如一个Label的默认间距效果是这样&#xff1a; 然后用一个封装起来的Cat…

MySQL查询之聚合查询

为了快速得到统计数据&#xff0c;提供了5个聚合函数&#xff1a; count(*)表示计算总行数&#xff0c;括号中写星与列名&#xff0c;结果是相同的 查询学生总数 select count(*) from students; max(列)表示求此列的最大值 查询女生的编号最大值 select max(id) from students…

React基础学习(第一天)

React 概述 : React 是一个用于 构建用户界面 的 JavaScript 库因为框架是有一整套解决方案的&#xff0c;React就是纯粹写UI组件的 没有什么异步处理机制、模块化、表单验证这些。React和react-router, react-redux结合起来才叫框架&#xff0c;而React本身只是充当一个前端…

iOS 富文本风格NSMutableParagraphStyle、定制UITextView插入图片和定制复制

问题一 开发过程中&#xff0c;经常会遇到动态计算行高的问题&#xff0c; - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullableNSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingC…

day24 01 初识继承

day24 01 初识继承 面向对象的三大特性&#xff1a;继承&#xff0c;多态&#xff0c;封装 一、继承的概念 继承&#xff1a;是一种创建新类的方式&#xff0c;新建的类可以继承一个或者多个父类&#xff0c;父类又可称基类或超类&#xff0c;新建的类称为派生类或者子类 class…

React基础学习(第二天)

虚拟DOM JSX 涉及到 虚拟DOM ,简单聊一下 定时器渲染问题 // 方法 function render() {//2. 创建react对象let el (<div><h3>时间更新</h3><p>{ new Date().toLocaleTimeString()}</p></div>)//3. 渲染ReactDOM.render(el, document.g…

iOS 去除字符串中的空格或多余空格(适合英文单词)

NSString -stringByTrimmingCharactersInSet: 是个你需要牢牢记住的方法。它经常会传入 NSCharacterSet whitespaceCharacterSet 或 whitespaceAndNewlineCharacterSet 来删除输入字符串的头尾的空白符号。 需要重点注意的是&#xff0c;这个方法 仅仅 去除了 开头 和 结尾 的…

华为交换机在Telnet登录下自动显示接口信息

因为用console连接交换机&#xff0c;默认是自动显示接口信息的&#xff0c;比如down掉一个接口后&#xff0c;会自动弹出接口被down掉的信息&#xff0c;但是在telnet连接下&#xff0c;默认是不显示这些信息的&#xff0c;需要开启后才可显示。 1、首先开启info-center(默认是…

React基础学习(第三天)

条件渲染 1. if / else render () {if (this.state.isLoading) { // 正在加载中return <h1>Loading...</h1>}return <div>这就是我们想要的内容</div>} // 钩子函数 五秒钟之后 修改状态值componentDidMount () { setTimeout(() > {this.setState(…

componentsJoinedByString 和 componentsSeparatedByString 的方法的区别

将string字符串转换为array数组 NSArray *array [Str componentsSeparatedByString:","]; &#xff1d;&#xff1d;反向方法 将array数组转换为string字符串 NSString *tempString [mutableArray componentsJoinedByString:","];--,是分隔符 可不加分隔…

java中的各种数据类型在内存中存储的方式

转载别人的附上链接&#xff1a;https://blog.csdn.net/zj15527620802/article/details/80622314 1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题。&#xff08;其中包括两部分&#xff09; 分配&#xff1a;内存的分配是由程序完成的&#xff0c;程序员需要通…

vscode的 jsonp 配置文件

{ // 工具-字体大小 “editor.fontSize”: 15, // 工具-tab缩进 “editor.tabSize”: 2, // 工具-在视区宽度换行 “editor.wordWrap”: “on”, // 工具-缩放 “window.zoomLevel”: 1, // 工具-编写tab识别语言格式 “emmet.includeLanguages”: { “vue-html”: “html”, “…

NSString拼接字符串和NSPredicate详解

NSString* string; // 结果字符串 02 NSString* string1, string2; //已存在的字符串&#xff0c;需要将string1和string2连接起来 03 04 //方法1. 05 string [[NSString alloc]initWithFormat:"%,%", string1, string2 ]; 06 07 //方法2. 08 string [string1 …

线程模块

信号量 from threading import Semaphore,Thread import timedef func(a,b):time.sleep(1)sem.acquire()print(ab)sem.release()sem Semaphore(4) for i in range(10):t Thread(targetfunc,args(i,i5))t.start() 信号量事件 # 事件被创建的时候&#xff0c;默认为False状态 #…

React中级学习(第一天)

Props深入 children 作用 : 获取组件标签的 子节点获取方式 : this.props.children <App>此处的内容&#xff0c;就是组件的 children&#xff0c;将来通过组件的 props.children 就可以获取到这些子节点了 </App>props 校验 作用&#xff1a;规定组件props的类…

iOS 正则表达式判断纯数字以及匹配11位手机号码

1用正则表达式 //是否是纯数字(BOOL)isNumText:(NSString *)str{NSString * regex "(/^[0-9]*$/)";NSPredicate * pred [NSPredicate predicateWithFormat:"SELF MATCHES %", regex];BOOL isMatch [pred evaluateWithObject:st…

Elasticsearch集成ik分词器

1、插件地址https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.0/elasticsearch-analysis-ik-7.0.0.zip 2、找到对应版本的插件通过 http://192.168.1.8:9200查看ES的版本&#xff0c;找到对应的IK分词插件 下载与之对应的版本https://github.com/me…

React中级学习(第二天)

JSX 语法的转化过程 (了解) 演示 : babel中文网试一试 let h1 JSX 仅仅是createElement() 方法的语法糖 (简化语法)JSX 语法 被 babel/preset-react 插件编译为 createElement() 方法React 元素&#xff1a;是一个对象&#xff0c;用来描述你希望在屏幕上看到的内容React 元素…

【】MTCNN基于NCNN的测试过程

前言 操作过程 NCNN: https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux-x86; vector初始化&#xff1a;int num[4] { 1, 4, 3, 2 }; int numLength sizeof(num) / sizeof(num[0]); vector<int> nums(num, num numLength); //使用数组初始化向量 Q&…