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

php网站开发技术前景培训网站建设方案

php网站开发技术前景,培训网站建设方案,湖州品牌网站设计,拼多多如何开个人店铺useReducer useReducer是React提供的一个高级Hook,没有它我们也可以正常开发#xff0c;但是useReducer可以使我们的代码具有更好的可读性#xff0c;可维护性。 useReducer 跟 useState 一样的都是帮我们管理组件的状态的#xff0c;但是呢与useState不同的是 useReducer…useReducer useReducer是React提供的一个高级Hook,没有它我们也可以正常开发但是useReducer可以使我们的代码具有更好的可读性可维护性。 useReducer 跟 useState 一样的都是帮我们管理组件的状态的但是呢与useState不同的是 useReducer 是集中式的管理状态的。 用法 const [state, dispatch] useReducer(reducer, initialArg, init?)参数: reducer 是一个处理函数用于更新状态, reducer 里面包含了两个参数第一个参数是 state第二个参数是 action。reducer 会返回一个新的 state。 initialArg 是 state 的初始值。 init 是一个可选的函数用于初始化 state如果编写了init函数则默认值使用init函数的返回值否则使用initialArg。 返回值: useReducer 返回一个由两个值组成的数组 当前的 state。初次渲染时它是 init(initialArg) 或 initialArg 如果没有 init 函数。 dispatch 函数。用于更新 state 并触发组件的重新渲染。 import { useReducer } from react; //根据旧状态进行处理 oldState处理完成之后返回新状态 newState //reducer 只有被dispatch的时候才会被调用 刚进入页面的时候是不会执行的 //oldState 任然是只读的 function reducer(oldState, action) {// ...return newState; }function MyComponent() {const [state, dispatch] useReducer(reducer, { age: 42,name:小满 });// ...计数器案例 初始状态 (initialState): const initialState { count: 0 };这里定义了一个初始状态对象包含一个 count 属性初始值为 0。 reducer 函数: function reducer(state, action) {switch (action.type) {case increment:return { count: state.count 1 };case decrement:return { count: state.count - 1 };default:throw new Error();} }reducer 是一个用来根据不同的 action 来更新状态的纯函数。它接收当前状态 (state) 和一个动作对象 (action)根据 action.type 来决定如何更新 state。如果 action.type 是 ‘increment’则 count 增加 1如果是 ‘decrement’则 count 减少 1。如果 action.type 不匹配任何已定义的情况则抛出一个错误。 App 组件: const App () {const [state, dispatch] useReducer(reducer, initialState);return (Count: {state.count}button onClick{() dispatch({ type: decrement })}-/buttonbutton onClick{() dispatch({ type: increment })}/button/); } export default App;当点击 “-” 按钮时调用 dispatch({ type: ‘decrement’ })使 count 减少。当点击 “” 按钮时调用 dispatch({ type: ‘increment’ })使 count 增加。 购物车案例 初始数据 (initData): const initData [{ name: 小满(只), price: 100, count: 1, id: 1, isEdit: false },{ name: 中满(只), price: 200, count: 1, id: 2, isEdit: false },{ name: 大满(只), price: 300, count: 1, id: 3, isEdit: false } ]initData 是一个数组表示初始的商品列表。每个商品有以下属性 name: 商品的名称例如 “小满(只)”。price: 单价例如 100。count: 数量默认为 1。id: 商品的唯一标识符。isEdit: 表示该商品名称是否处于编辑状态默认为 false。 类型定义 (List 和 Action): type List typeof initData interface Action { type: ADD | SUB | DELETE | EDIT | UPDATE_NAME, id: number, newName?: string }List 是商品数组的类型直接从 initData 推断。Action 接口定义了不同的操作类型 ADD: 增加某个商品的数量。SUB: 减少某个商品的数量。DELETE: 删除某个商品。EDIT: 切换某个商品的编辑状态。UPDATE_NAME: 更新某个商品的名称。id: 需要操作的商品的 id。newName: 用于 UPDATE_NAME 操作时新的商品名称。 Reducer 函数 (reducer): function reducer(state: List, action: Action) {const item state.find(item item.id action.id)!switch (action.type) {case ADD:item.countreturn [...state]case SUB:item.count--return [...state]case DELETE:return state.filter(item item.id ! action.id)case EDIT:item.isEdit !item.isEditreturn [...state]case UPDATE_NAME:item.name action.newName!return [...state]default:return state} }reducer 函数根据传入的 action 更新商品列表的状态。 查找到要操作的商品 item。 对不同的 action.type 执行相应操作 ADD: 将商品数量增加 1。SUB: 将商品数量减少 1。DELETE: 删除指定商品。EDIT: 切换商品的编辑状态输入框显示或隐藏。UPDATE_NAME: 更新商品的名称。 App 组件: function App() {let [data, dispatch] useReducer(reducer, initData)return (table cellPadding{0} cellSpacing{0} width{600} border{1}theadtrth物品/thth价格/thth数量/thth操作/th/tr/theadtbody{data.map((item) {return (tr key{item.id}td aligncenter{item.isEdit ? input onBlur{e dispatch({ type: EDIT, id: item.id })} onChange{e dispatch({ type: UPDATE_NAME, id: item.id, newName: e.target.value })} value{item.name} / : span{item.name}/span}/tdtd aligncenter{item.price * item.count}/tdtd aligncenterbutton onClick{() dispatch({ type: SUB, id: item.id })}-/buttonspan{item.count}/spanbutton onClick{() dispatch({ type: ADD, id: item.id })}/button/tdtd aligncenterbutton onClick{() dispatch({ type: EDIT, id: item.id })}编辑/buttonbutton onClick{() dispatch({ type: DELETE, id: item.id })}删除/button/td/tr)})}/tbodytfoottrtd colSpan{3}/tdtd aligncenter总价:{data.reduce((prev, next) prev next.price * next.count, 0)}/td/tr/tfoot/table/) }App 组件使用 useReducer 来管理 data 状态它从 initData 初始化并通过 dispatch 分发动作来改变商品列表。商品列表通过 table 渲染每个商品显示以下信息物品如果该商品的 isEdit 为 true显示一个输入框用于修改名称否则显示商品名称。价格显示商品的总价price * count。数量显示商品的数量提供 - 和 按钮来减少或增加数量。操作提供 编辑 按钮切换名称编辑状态删除 按钮可以删除该商品。tfoot 部分显示购物车的总价通过 reduce 方法计算所有商品的总价。
http://www.hkea.cn/news/14549801/

相关文章:

  • 制作个人主页东莞企业seo推广
  • 文学网站模板下载呼伦贝尔网站设计
  • 门户手机版网站网站建设是广告吗
  • 灯箱网站开发wordpress商品分类目录
  • 工程师报考网站室内设计好学吗
  • 做程序任务发布的网站怎么把广告发到各大平台
  • 哪有宝安网站推广企业网站建设企业
  • 上线了建站教程摄影网站开发
  • 工艺品网站源码公司为什么建立网站
  • 网页出现网站维护企业网站推广湖南岚鸿推广
  • 综治暨平安建设网站四川住建厅考试报名官网
  • 综合网站开发如何制作微信链接
  • 做网站首选科远网络百度号码认证申诉平台
  • 网站关键词怎么做广东省建设教育协会是什么网站
  • 建设网站的子文件夹沈阳建设局网站
  • 网站友情链接出售施工企业包括哪些
  • 嘉兴专业的嘉兴专业网站建设项目app地图下载安装
  • 什么网站后台程序好用北京seo技术交流
  • 做一个宣传网站的策划书石家庄新闻最新消息今天
  • 崇州企业网站建设做美图 网站有哪些东西吗
  • 上海软件培训网站建设建设商务网站的目的
  • 网站建设费用明细报告招聘门户网站是什么意思
  • 酒店类网站建设方案书媒体资源网官网
  • 做网站需要规划好什么建设网站的公司有哪些知乎
  • 如何在网站搜关键字北京哪个公司做网站好
  • 苏州展示型网站建设开发大型网站的最主流语言
  • 网站建设移交内容中国交通建设集团有限公司董事长
  • 虚拟主机怎么发布网站做消费信贷网站
  • dw软件做网站设计公司上市企业
  • 020网站管理系统模板网站建设课程设计实训心得