「真香警告」鱼头手摸手教你在小程序里用composition-api
使用
使用起来应该像是这个样子
wxue(options)
setup
配置应该是包含一个setup
选项是一个函数,返回的函数可以this.xxx
调用,返回的数据可以this.data.xxx
用到,如下
import { wxue, reactive } from 'wxue'
wxue({
setup(options) {
const test = reactive({
x: 1,
y: 2,
})
setInterval(() => {
test.x++
}, 1000)
return {
test,
}
},
})
ref
api
应该有如下api
- reactive
- ref
- unref
- toRef
- toRefs
- computed
- watchEffect
- watch
- 各种钩子,与小程序生命周期一致
示例
import { wxue, nextTick, ref, onShow } from 'wxue'
function useAutoAdd(x) {
const b = ref(x)
setInterval(() => {
b.value++
}, 1000)
return b
}
wxue({
data: {},
setup(options) {
const b = useAutoAdd(2)
onShow(() => {
console.log('onShow form hooks', this)
})
function getXx() {
console.log(this, 'getXx')
}
return {
c: b,
getXx,
test,
}
},
onLoad: function (options) {
setTimeout(() => {
this.test()
console.log(this.data.b)
}, 5000)
this.getXx()
},
test: function () {
nextTick(() => {
console.log(this.data.a.b)
})
this.data['a.b'] = 111
this.data['a.c'] = 111
},
})
wxue
跟 vue 的 composition-api 类似,小程序端的逻辑复用的解决方案。
介绍
由于参照vue
,暂且叫他wxue吧。提供了vue
的composition-api
类似的用法。wxue源码 跪求star~
安装
npm i wxue -S
wxue
wxue(options)
options
中需要配置setup
,并且setup
是一个函数
setup
返回一个对象,可包含对象或者是函数,函数将会挂载到this
中,对象将挂载到data
中
reactive
返回对象的响应数据。
import { wxue, reactive } from 'wxue'
wxue({
setup(options) {
const test = reactive({
x: 1,
y: 2,
})
setInterval(() => {
test.x++
}, 1000)
return {
test,
}
},
})
ref
接受一个内部值并返回一个反应性且可变的ref
对象。ref
对象具有.value
指向内部值的单个属性。
import { wxue, ref } from 'wxue'
wxue({
setup(options) {
const x = ref(1)
setInterval(() => {
x.value++
}, 1000)
return {
x,
}
},
})
unref
如果参数是 ref,则返回内部值,否则返回参数本身。
toRef
可用于 ref 在源反应对象上为属性创建
const test = reactive({
x: 1,
y: 2,
})
const x = toRef(test, 'x')
return { x }
toRefs
将反应对象转换为普通对象,其中所得对象的每个属性都 ref 指向原始对象的相应属性,可用于解构
const test = reactive({
x: 1,
y: 2,
})
const { x } = toRefs(test)
return { x }
computed
计算属性 返回的值返回一个不变的反应性 ref 对象。
const computedX = computed(() => x.value + 1)
return { computedX }
watchEffect
它会在反应性地跟踪其依赖关系时立即运行一个函数,并在依赖关系发生更改时重新运行它。stop 停止监听
const count = ref(0)
const stop = watchEffect(() => console.log(count.value))
setTimeout(() => {
count.value++
if (count.value === 100) {
stop()
}
}, 1000)
watch
观察者数据源可以是返回值的 getter 函数,也可以直接是 ref, stop 停止监听
const count = ref(0)
const state = reactive({ count: 0 })
const stop = watch(ref, (count, prevCount) => {
/* ... */
})
const stop2 = watch(
() => state.count,
(count, prevCount) => {
/* ... */
}
)
stop()
stop2()
hooks
支持小程序的所有生命周期 onLoad
,onReady
,onShow
,onHide
,onUnload
,onPullDownRefresh
,onReachBottom
,onShareAppMessage
import { wxue, onShow } from 'wxue'
wxue({
setup(options) {
onShow(() => {
console.log('onShow form hooks')
})
},
})
setData(page, data)
优化的setData
,多次调用将合并成一次执行
nextTick()
setData
是异步的,在setData
执行后完成后执行的回调nextTick
// 1 返回Promise
await nextTick()
// 2 执行回调
nextTick(() => {})
其他
对this.data
的 set 进行了劫持,会调用setData
最后
欢迎大家提出宝贵的意见,如有错误还望评论区不要客气,大家共同学习,一起进步。github: https://github.com/kouchao/wxue,跪求star~
- SVG 使用
- 小程能走网店模式?如何做分销模式的小程序?
- IIS 6 下配置以 FastCGI 跑 PHP
- IIS 7.x Application Request Routing(ARR) 502错误的解决方法
- 移动前端头部标签(HTML5 meta)
- 这个行业在汽车圈最落后,正在被物联网和AI改变
- WordPress 网站基于REST API 开发“微信小程序”实战
- 摩拜共享汽车亮相 首批新能源电动汽车试运行
- 基于SQL Server 2008 Service Broker构建企业级消息系统
- Windows主机管理系统Websitepanel
- 自定义Appfabric Cache 配置提供程序
- 2017年发生在上海的科技大新闻
- REST当中为什么要使用HTTP PUT
- 推荐一个在Linux/Unix上架设ASP.NET的 WEB服务器--Jexus
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 安装vcs
- Mercari数据集——机器学习&深度学习视角
- 查找重复姓名的sql语句
- nginx如何限制并发连接请求数?
- RTSP协议视频平台EasyNVR证书配置界面上传文件地址自动填写错误怎么处理?
- 开发RTSP/RTMP/GB28181/海康SDK/EHome视频融合平台EasyCVR,使用vue-cli3项目搭建多页面模式的方法
- 互联网视频直播&点播平台RTMP推流组件EasyRTMP在弱网环境下推流稳定吗?会不会有推流失败的问题?
- 安防融合视频云服务EasyCVR集成海康EHome协议实现设备录像回看返回会话ID为-1是什么情况?
- git .gitignore 忽略规则的匹配语法
- vue 初始化高德地图
- js -- 判断数组是否为空?
- 手机没网了,却还能支付,这是什么原理?
- grub异常
- 34.Python字符串替换方法translate
- 35.Python字符串格式运算符%