设为首页 加入收藏

TOP

微信小程序day04基础加强(一)
2023-07-23 13:25:41 】 浏览:70
Tags:程序 day04 加强

一.自定义组件

1.1 组件的创建与引用

首先创建组件

image-20220802165616452

然后我们组件的引用分为局部和全局引用

局部引用就是在当前页面能使用,在当前页面的json文件里面配置

image-20220802170311755

全局引用同样的道理,注意跟page等是同级的

组件与页面的不同:

虽然都有相应的四个文件

image-20220802171004305

1.2 组件样式

首先,默认情况下 组件的样式就是隔离的==,组件之间不会相互影响,小程序也不会影响到组件,组件也影响不到小程序

注意:

image-20220802172226719

虽然默认情况下是隔离的,但是也可以一些设置让其不隔离

image-20220802173255464

styleIsolation的属性:

image-20220802174016651

1.3 数据、方法和属性

数据就是组件js里面的data节点里面的数据

方法就是组件js文件里面methods方法,区别于其他页面js的函数是直接写在里面的,组件的函数都需要写在methods里面

主要注意一点,如果不是事件的处理函数,不是由事件来触发,一般这样的函数前面都为一个_下划线

image-20220803133834395

属性:properties

是组件用来接收外部传进来的一些数据

image-20220803134034130

两者区别是上一种不用传值也有默认值

data和properties区别:

都是可读可写的,data倾向于存储私有数据,properties倾向于存储外部传进来的数据

properties也是通过setData来修改

image-20220803134722700

1.4 数据监听器

类似于watch 这里面是 observers

要监听多个字段,直接写在一起通过,分割

image-20220803134902555

image-20220803140242741

image-20220803140258777

同样还支持监听对象里面单个或多个属性的变化

image-20220803140532306

如果是要监听对象里面所有的属性,通过两个通配符 **

image-20220803142713368

而且对应的新值也是整个对象

1.5 纯数据字段

不用于界面渲染的data字段就是纯数据字段

对于这类数据用纯数据来定义更性能会更快

image-20220803144119940

1.6 生命周期

组件的生命周期函数一共六个:

image-20220803144422081

第一个还没有放入到页面节点树中,类似于beforeCreate

第二是放入了页面节点树,但是还没有渲染出来类似于beforeMount

最重要的一共三个:

image-20220803144839900

要定义组件的生命周期,需要用到 lifetimes对象里面来写生命周期函数

image-20220803145215835

还有一个就是组件所在页面的生命周期

就是当组件的行为需要依赖页面的变化的时候,但是组件能访问到页面的生命周期也不多就三个

image-20220803145651143

同样的也需要写到一个对象里面, pageLifetimes

image-20220803150154213

1.7 组件插槽

  • 单个插槽

    首先在组件里面通过slot来占位,然后页面使用组件这里直接写你自己的组件,注意是直接写,因为是单个插槽也不需要指定什么

    image-20220803152701455

    image-20220803152707558

  • 多个插槽

    如果要启用多个插槽,就需要配置一下,现在组件js配置options里面为multipleSlots为true

    image-20220803153208202

    然后定义slot的时候需要指定name

    image-20220803153247872

    使用的时候用 slot来指明name

    image-20220803153339168

1.8 父子组件通信

有三种方式:

image-20220803154341077

  • 属性绑定: 仅能设置json兼容数据也就是仅能传一些简单数据,不能传方法等

    注意页面也可以当做父组件

    在页面的data定义自己的数据

    image-20220803172100118

    直接通过属性绑定给到子组件

    image-20220803172158328

    子组件通过properties来接受

    image-20220803172223917

  • 事件绑定

    子组件给父组件传数据的时候

    首先父组件要在js定义这个自定义函数

    image-20220803174658471

    然后给到子组件,给的时候就通过bind语法加你的事件名,这里最好用第二种形式,可以跟原生事件做一个区别

    image-20220803175534412

    子组件这边通过 this.triggerEvent里面是事件名,和你要带的参数(对象形式)

    image-20220803175124089

    最后父组件这边通过 e.detail获取参数

    image-20220803175319957

  • 获取组件实例

    也是父给子传,类似于ref,需要给子组件设置 class或者id,通过 this.selectComponent来获取到子组件从而可以去修改他的一些data、properties或者调用它的一些方法

    image-20220803180632338

1.9 behaviors

behaviors就是mixin,组件中属性、数据、方法、生命周期函数等有共同的都可以通过behaviors来共享

每个组件可以引用多个behavior,behavior也可以引用其他behavior

创建:一般在根目录创建一个behavior文件夹,里面放一个js来专门存放behavior

image-20220803181021863

导入并使用:

image-20220803181142738

此时你的组件已经有这些属性、数据等了,直接用即可

image-20220803181303826

behavior可以存放的属性有哪些:

image-20220803181405516

当behavior与组件里面的一些属性、数据等同名时

有一些规则,还是比较多的,可以通过微信官方文档来看具体

image-20220803181743796

二.使用npm包

虽然能使用npm包,但并不是所有包都能使用

image-20220804110421664

依赖node(如:fs)、依赖浏览器内置对象(如:jQuery)、依赖c++

2.1 Vant Weapp

是有赞前端团队专门用于小程序的一套ui结构

首先安装,参考官网文档https://vant-contrib.gitee.io/vant-weapp/#/quickstart

在自己终端窗口打开,首先要先初始化

image-20220804112401107

直接npm开始安装

image-20220804112502020

接下来的两步查看官方文档配置

image-20220804112906786

image-20220804112919574

然后构建npm就完成安装了

使用

需要在app.json的usingComponents注册

image-20220804114500724

2.2 使用css变量定制vant主题样式

首先css变量怎么用,类似于less变量,可以起到一个方便修改的作用

带有前缀--的属性名,比如--example--name,表示的是带有值的自定义属性,其可以通过 var 函数在全文档范围内复用的。

image-20220804115548875

怎么来定制vant主题

首先是需要在app.wxss里面修改page的样式

在小程序里面page就相当于html是整个页面的根节点

那么怎么来修改呢:

可以在官网文档找到

image-20220804120436071

在这里面找到你要修改的那个组件的什么样式

image-20220804120553176

将前面改成--

image-20220804120645414

2.3 API promise化

小程序官方提供的很多api是基于回调来执行的,就比如发请求的request里面就有成功失败完成等回调,像这样回调一多了就容易产生一个问题,就是造成回调地狱的问题,代码的可读性、维护性差

要将官方api promise化需要用到一个包 miniprogram-api-promise

image-20220804134741111

需要知道的是,我们微信小程序是不能直接识别这些npm包的,之所以能够使用完全是因为构建了npm包,所以这个时候一般下了一个包之后还需要构建一次npm

image-20220804134848452

image-20220804134859850

然后是使用需要在app.js里面顶级先注册调用

将wx上的方法都promise化给到了空对象wxp

中间一定要有个wx.p过渡,后面用也是用这个

image-20220804140332486

怎么来用:

比如发起一个请求

image-20220804140356558

image-20220804140401698

所以现在就可以用async,await了

image-20220804140447539

三.全局数据共享

类似于vuex实现各个组件间数据共享

需要两个包来实现:

image-20220804143922837

  • 下载

    image-20220804145219579

  • 创建store

    创建一个store文件夹专门来做仓库,里面导入observable,向外导出他,他就像new store一样,里面就可以放一些需要存放的数据

    state

    image-20220804155828071

    计算属性

    直接在下面定义一个函数即可,依赖的数据产生变化,他也会跟着变

    image-20220804161041823

    action

    要修改store里面的数据也是需要action来修改的,需要先引入

    image-20220804162402385

    然后直接在里面写action的函数,注意方法需要用action包起来

    image-20220804162452133

    而且他会接受参数,也就是外部action传进来的参数

    image-20220804162558061

    怎么来在page页面中来使用mobx中的数据或者actions

    image-20220808180750424

    先引入上面这个方法和我们的store数据源

    首先在我们onLoad钩子中用到这个方法来创建,第一个参数为this也就是这个页面的实例,第二个参数一个对象有我们的数据源,有我们的data、getters、还有actions里面的函数

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【微信小程序】——案例:本地生.. 下一篇python——面向对象

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目