记账本React案例(Redux管理状态)

文章目录

整体架构流程

环境搭建

创建项目

技术细节

一、别名路径配置

1.路径解析配置(webpack) ,将@/解析为src/

2.路径联想配置(vsCode),使用vscode编辑器时,自动联想出来src文件夹下的子级文件目录

二、实现Mock数据

1.安装json-server插件   npm i -D json-server

2.准备一个json文件

3.在package.json文件中添加启动命令

4.访问启动命令

三、配置全局路由

1.项目中新建四个文件夹

2.在router文件中配置路由

3.想要显示二级路由页面就得在一级路由页面添加组件

4.通过浏览器可访问各级页面

四、使用antD-mobile 定制主题颜色

1.去package.json中查看antd-mobile安装包,没有安装的话使用

2.创建主题css文件并配置主题色

3.配置完成后在全局引入即可

五、Redux管理账目列表

1.使用Redux管理状态,在项目中新建仓库store,并初始化状态列表,编写同步修改状态方法以及异步获取接口方法,并导出创建action对象的函数

2.在store仓库中,利用configureStore简化store的设置和配置

3.全局注册store

4.来到我们的Layout文件下通过useEffect方式调取接口

5.到浏览器控制台可查看网络

六、实现TabBar功能

1.下载安装less        

2.来到antD官网找到TabBar标签页组件(选择基础用法相关代码)并引入到layout文件下进行改写

3.在Layout文件夹下新建index.less文件并写入相关代码

七、月度账单

1.搭建月度账单静态页面,在month文件夹下

2.点击时间打开弹窗,设置弹窗开关状态并使用,给时间区域添加点击事件

3.点击确定或者取消以及点击蒙版区域都可以关闭弹窗

4.弹窗关闭时箭头朝上,打开朝上

5.点击确定时间切换

(1)创建日期状态

(2)将获取到的时间值赋值给当前状态

6.按月分组(将相同月份的日期划分为一组)

7.月度初始化时渲染当前月的数据

8.将当前月的数据以单日为单位进行统计显示

9.将单日账单渲染在列表中

(1)准备单日列表

(2)准备渲染模板数据

(3)在DailyBill中index.js文件下引入组件并使用

10.点击切换列表进行显示

(1)控制显示隐藏并添加事件进行点击取反操作

(2)根据状态适配箭头和隐藏

11.账单类型图标组件封装

(1)撰写静态组件结构

(2)根据Props适配不同图标

八、新增账单

1.支出和切换账单

(1)定义控制支出以及收入的状态

(2)添加点击切换事件并通过classNames来控制类名显示

(3)调用封装好的common中数据billListData渲染当前页面

2.实现保存订单功能

(1)构建金额状态,编写金额改变事件,创建类型状态,撰写保存事件

(2)因为react是单向数据流,所以我们可以通过自定义事件onChange来进行双向数据绑定

(3)点击根据不同的icon类型进行改变

(4)其中需要用到接口,通过redux来管理数据状态

3.添加账单选中时的样式

4.时间选择器功能

(1)添加时间选择器展开控制状态,以及点击事件并应用

(2)撰写时间选择器取消以及确定时关闭功能

(3)默认显示当前日期,当用户选择日期时将其显示出来

小结


整体架构流程

环境搭建

1.Redux状态管理  -  @reduxjs/toolkit、react-redux

2.路由 - react-router-dom

3.时间处理 - dayjs

4. class类名处理 - classnames

5.移动端组件库 - antd-mobile

6.请求插件 - axios

创建项目

1.使用npx create-react-app 你的项目名称创建react移动端项目

2.下载此次开发所需依赖包

命令:npm i @reduxjs/toolkit react-redux react-router-dom dayjs classnames antd-mobile axios

注意:下载好依赖包后可直接到package.json包中查看相关版本信息

3.启动项目

命令:npm run srart

技术细节

一、别名路径配置

1.路径解析配置(webpack) ,将@/解析为src/

(1)安装craco

(2)项目根目录下创建配置文件craco.config.js

(3)配置文件中添加路径解析配置

(4)包文件中配置启动和打包命令 

2.路径联想配置(vsCode),使用vscode编辑器时,自动联想出来src文件夹下的子级文件目录

(1)在项目根目录文件夹下建立jsconfig.json文件

)配置

二、实现Mock数据

1.安装json-server插件   npm i -D json-server

2.准备一个json文件

代码片段:

{

    "ka":[

        {

            "type":"pay",

            "money":-99,

            "date":"2024-04-17 17:21:30",

            "useFor":"drinks",

            "id":1

        },

        {

            "type":"pay",

            "money":-88,

            "date":"2024-04-17 17:22:12",

            "useFor":"longdistance",

            "id":2

        },

        {

            "type":"pay",

            "money":-56,

            "date":"2024-04-17 17:45:30",

            "useFor":"bonus",

            "id":3

        },

        {

            "type":"pay",

            "money":-57,

            "date":"2024-04-17 17:45:30",

            "useFor":"dessert",

            "id":4

        },

        {

            "type":"pay",

            "money":-35,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":5

        },

        {

            "type":"pay",

            "money":-86,

            "date":"2024-04-17 17:45:30",

            "useFor":"travel",

            "id":6

        },

        {

            "type":"pay",

            "money":-28,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":7

        },

        {

            "type":"pay",

            "money":-45,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":8

        },

        {

            "type":"pay",

            "money":-44,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":9

        },

        {

            "type":"pay",

            "money":-71,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":10

        },

        {

            "type":"pay",

            "money":-69,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":11

        },

        {

            "type":"pay",

            "money":-38,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":12

        },

        {

            "type":"pay",

            "money":-25,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":13

        },

        {

            "type":"pay",

            "money":-65,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":14

        },

        {

            "type":"pay",

            "money":-43,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":15

        },

        {

            "type":"pay",

            "money":-57,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":16

        },

        {

            "type":"pay",

            "money":-68,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":17

        },

        {

            "type":"pay",

            "money":-12,

            "date":"2024-04-17 17:45:30",

            "useFor":"drinks",

            "id":18

        }

    ]

}

3.在package.json文件中添加启动命令

4.访问启动命令

三、配置全局路由

1.项目中新建四个文件夹

2.在router文件中配置路由

3.想要显示二级路由页面就得在一级路由页面添加<Outlet />组件

4.通过浏览器可访问各级页面

四、使用antD-mobile 定制主题颜色

官网:Ant Design Mobile - Ant Design Mobile

1.去package.json中查看antd-mobile安装包,没有安装的话使用

npm install --save antd-mobile或者yarn add antd-mobile下载安装即可

2.创建主题css文件并配置主题色

3.配置完成后在全局引入即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值