卡比记账项目——Vue中ref和reactive

使用场景

一般比较简单的变量比如布尔我们会选择使用ref
const a = ref(false)
比较复杂的变量比如对象可以选择使用reactive
const formData = reactive({a:xxx,b:yyy})

本质上没有什么区别,都是代理变量。

选中tag

现在我们要实现能够选取tag。使用v-model来完成。
在Tag组件中添加v-model

截屏2022-11-22 14.45.33.png

进入Tags.tsx组件,props中添加一个selected属性,类型为Number。由于要适配v-model,所以还要加上emits。

截屏2022-11-22 14.46.45.png

添加onSelect事件

截屏2022-11-22 14.50.33.png

截屏2022-11-22 14.50.44.png

可以选择tag了

截屏2022-11-22 14.56.29.png

inputPad组件中 输入日期和数值

思路:依然选择两个v-model来进行双向绑定
定义两个ref分别用来标记记账时间以及记账金额。

截屏2022-11-22 19.16.17.png

并进行v-model

截屏2022-11-22 19.01.09.png
来到inputPad中,props加入这两个属性

截屏2022-11-22 19.01.39.png

所以我们不再需要原有的refDate,可以替代成happenAt,但是我们的new date是字符串,回到time.tsx让其支持字符串类型

截屏2022-11-22 19.07.23.png

触发事件改一下:

截屏2022-11-22 19.17.35.png
在inputPad的上面显示一下当前的时间

截屏2022-11-22 19.17.56.png

Amount金额

做金额不能像时间一样,不能在用户点击过程中就刷新,需要一个中间变量。
先在提交时添加事件,

截屏2022-11-22 19.25.59.png
测试一下:

截屏2022-11-22 19.26.18.png
但是在清零的时候是不能自动回0,需要再点击记账。同时vue也给了个警告,说type不对。

截屏2022-11-22 19.27.22.png

我们需要做一些调整

先把number变成string
截屏2022-11-23 14.24.53.png
提交时把string变回number
截屏2022-11-23 14.25.06.png
成功消除警告。

记账实现

现在已经做好了绝大部分功能,只差点击记账即可把数据记录在服务器了,现在进行实现。

回到ItemCreate,现在还没有监听提交。在InputPad上添加一个submit的监听。

截屏2022-11-23 14.52.32.png

到InputPad中props里面加入onSubmit,
截屏2022-11-23 14.52.45.png

点击记账时触发一下submit事件
截屏2022-11-23 14.53.11.png

在onSubmit中发送请求:

截屏2022-11-23 15.00.46.png

这样子写不好,所以我们用reactive对ref进行一个改写

截屏2022-11-23 15.07.36.png

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容