当前位置: 首页 > news >正文

做网站行业统称叫什么行业那些网站可以做0首付分期手机号

做网站行业统称叫什么行业,那些网站可以做0首付分期手机号,网络营销收获与体会,苏州市规划建设局网站美团小案例 1. 案例演示基本开发思路:使用 RTK(Redux Toolkit)来管理应用状态, 组件负责 数据渲染 和 dispatch action2. 准备环境 克隆项目到本地(内置了基础静态组件和模版) git clone http://git.itcast.cn/heimaqi…

美团小案例

1. 案例演示

在这里插入图片描述

基本开发思路:使用 RTK(Redux Toolkit)来管理应用状态, 组件负责 数据渲染 和 dispatch action

2. 准备环境

  1. 克隆项目到本地(内置了基础静态组件和模版)
git clone http://git.itcast.cn/heimaqianduan/redux-meituan.git 

在这里插入图片描述

  1. 安装所有依赖
npm i 
  1. 启动mock服务(内置了json-server)
npm run serve 
  1. 启动前端服务
npm run start 

3. 分类和商品列表渲染

在这里插入图片描述

1- 编写store逻辑: src/store/modules/takeaway.js

// 编写store
import { createSlice } from "@reduxjs/toolkit"
import axios from "axios"
// 1、编写同步部分的store
const foodsStore = createSlice({name: 'foods',// (1).初始化值initialState: {// 商品列表foodsList: []},// (2).修改方法reducers: {// 更改商品列表setFoodsList (state, action) {state.foodsList = action.payload}}
})// 2、解构
const { setFoodsList } = foodsStore.actions
// 异步获取部分
const fetchFoodsList = () => {return async (dispatch) => {// 编写异步逻辑const res = await axios.get('http://localhost:3004/takeaway')// 调用dispatch函数提交actiondispatch(setFoodsList(res.data))}
}// 3、导出
export { fetchFoodsList }const reducer = foodsStore.reducer
export default reducer

2 -组合store: src/store/index.js

import { configureStore } from "@reduxjs/toolkit";
import foodsReducer from "./modules/takeaway";const store = configureStore({reducer: {foods:foodsReducer}
})export default store

3- 组件使用store数据: src/App.js

// 省略部分代码
import { useDispatch, useSelector } from 'react-redux'
import { fetchFoodsList } from './store/modules/takeaway'
import { useEffect } from 'react'const App = () => {// 触发action执行// 1. useDispatch -> dispatch // 2. actionCreater导入进来 // 3.useEffectconst dispatch = useDispatch()useEffect(() => {dispatch(fetchFoodsList())}, [dispatch])return (<div className="home">{/* 导航 */}<NavBar />{/* 内容 */}<div className="content-wrap"><div className="content"><Menu /><div className="list-content"><div className="goods-list">{/* 外卖商品列表 */}{foodsList.map(item => {return (<FoodsCategorykey={item.tag}// 列表标题name={item.name}// 列表商品foods={item.foods}/>)})}</div></div></div></div>{/* 购物车 */}<Cart /></div>)
}export default App

4- Menu组件中使用store数据: src/componmens/Menu/index.js
在这里插入图片描述

4. 点击分类激活交互实现

在这里插入图片描述
在这里插入图片描述

1- 编写store逻辑: src/store/modules/takeaway.js
在这里插入图片描述在这里插入图片描述

2- 编写组件逻辑: src/componmens/Menu/index.js
在这里插入图片描述

5. 商品列表切换显示

在这里插入图片描述
src/App.js
在这里插入图片描述

6. 添加购物车实现

在这里插入图片描述
在这里插入图片描述
实现思路:

  1. 使用RTX管理新状态cartList
    (思路:如果添加过,只更新数量count,没有添加过,直接push进去)
  2. 组件中点击时收集数据提交action添加购物车(src/components/FoodsCategory/FoodItem/index.js)

1- 编写store逻辑: src/store/modules/takeaway.js

// 编写storeimport { createSlice } from "@reduxjs/toolkit"
import axios from "axios"const foodsStore = createSlice({name: 'foods',reducers: {// 添加购物车addCart (state, action) {// 是否添加过?以action.payload.id去cartList中匹配 匹配到了 添加过const item = state.cartList.find(item => item.id === action.payload.id)if (item) {item.count++} else {state.cartList.push(action.payload)}}}
})// 导出actionCreater
const { addCart } = foodsStore.actionsexport { addCart }const reducer = foodsStore.reducerexport default reducer

2- 编写组件逻辑: src/components/FoodsCategory/FoodItem/index.js

<div className="goods-count">{/* 添加商品 */}<span className="plus" onClick={() => dispatch(addCart({id,picture,name,unit,description,food_tag_list,month_saled,like_ratio_desc,price,tag,count:count||1}))}></span>
</div>

7. 统计区域实现

在这里插入图片描述

实现思路

  1. 基于store中的cartList的length渲染数量
  2. 基于store中的cartList累加price * count
  3. 购物车cartList的length不为零则高亮
// 计算总价 
const totalPrice = cartList.reduce((a, c) => a + c.price * c.count, 0){/* fill 添加fill类名购物车高亮*/}
{/* 购物车数量 */}
<div onClick={onShow} className={classNames('icon', cartList.length > 0 && 'fill')}>{cartList.length > 0 && <div className="cartCornerMark">{cartList.length}</div>}
</div>

在这里插入图片描述

8. 购物车列表功能实现

在这里插入图片描述

在这里插入图片描述

1-控制列表渲染
src/components/Cart/index.js

const Cart = () => {return (<div className="cartContainer">{/* 添加visible类名 div会显示出来 */}<div className={classNames('cartPanel', 'visible')}>{/* 购物车列表 */}<div className="scrollArea">{cartList.map(item => {return (<div className="cartItem" key={item.id}><img className="shopPic" src={item.picture} alt="" /><div className="main"><div className="skuInfo"><div className="name">{item.name}</div></div><div className="payableAmount"><span className="yuan">¥</span><span className="price">{item.price}</span></div></div><div className="skuBtnWrapper btnGroup">{/* 数量组件 */}<Countcount={item.count}/></div></div>)})}</div></div></div>)
}export default Cart

2- 购物车增减逻辑实现
src/store/modules/takeaway.js

// count增
increCount (state, action) {// 关键点:找到当前要修改谁的count idconst item = state.cartList.find(item => item.id === action.payload.id)item.count++
},
// count减
decreCount (state, action) {// 关键点:找到当前要修改谁的count idconst item = state.cartList.find(item => item.id === action.payload.id)if (item.count === 0) {return}item.count--
}

src/store/modules/takeaway.js

<div className="skuBtnWrapper btnGroup">{/* 数量组件 */}<Countcount={item.count}onPlus={() => dispatch(increCount({ id: item.id }))}onMinus={() => dispatch(decreCount({ id: item.id }))}/>
</div>

3-清空购物车实现
src/store/modules/takeaway.js

// 清除购物车
clearCart (state) {state.cartList = []
}

src/components/Cart/index.js

import { clearCart } from "../../store/modules/takeaway";
<div className="header"><span className="text">购物车</span><span className="clearCart" onClick={() => dispatch(clearCart())}>清空购物车</span>
</div>

9. 控制购物车显示和隐藏

在这里插入图片描述
在这里插入图片描述
src/components/Cart/index.js
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/504273.html

相关文章:

  • 百度网址大全 官网首页seoul是什么国家
  • 山西忻州市忻府区怎么把做的网站优化到百度
  • Shell脚本入门:从基础到实战
  • 【Linux】深入理解线程同步与互斥
  • 山东青岛网站建设公司排名网站空白页黑链
  • C++学习之变量、常量、关键字、标识符命名规则、数据类型
  • BMS电池管理系统学习笔记_SOC算法
  • 浅谈信创数据库改造重难点
  • 建设银行唐山分行网站上海专业网站建设服务
  • 算法沉淀第七天(AtCoder Beginner Contest 428 和 小训练赛)
  • 温州做网站定制车载互联系统网站建设
  • 迅当网络深圳外贸网站建设竞价网络推广
  • 【GESP】C++四级真题 luogu-B4006 [GESP202406 四级] 宝箱
  • 公司做网站找谁公司做网站找谁网站信息评估抽查
  • wordpress网站添加密码访问营销微网站建设公司
  • 吴恩达新课程:Agentic AI(笔记2)
  • 用dw怎么做网站留言板重庆重庆网站建设
  • 家具网站开发目的wordpress页脚太高
  • 西南交通建设集团股份有限公司网站带分期功能的网站建设
  • 姚期智京都奖( 2021)演讲:做研究最好的方法是提出深刻、大胆和关键性的问题
  • 商务网站创建经费预算wordpress打开文章响应慢
  • arthas简介
  • 企业网站源码交易国产wordpress主题
  • 做网站要学什么c语言西安网站建设求职简历
  • 用阿里云服务器做自己购物网站wordpress多人聊天室
  • sm2025 模拟赛16 (2025.10.11)
  • 国内网站建设流程淘宝店标logo在线制作免费
  • 长沙市做网站公司排名广州做网站好的公司
  • SQL Server数据查询语句
  • 给领导发网站建设可行性方案邮件怎么写wordpress 获取用户邮箱