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

手机网站怎样做广州 美容 公司 网站建设

手机网站怎样做,广州 美容 公司 网站建设,网站霸屏怎么做,网站推广怎么样做redux的介绍、安装、三大核心与执行流程 一、redux的基本介绍二、redux的安装三、redux核心概念3.1 action3.2 reducer3.3 store 四、Redux代码执行流程五、加减案例练习 一、redux的基本介绍 redux中文官网Redux 是 React 中最常用的状态管理工具#xff08;状态容器#x… redux的介绍、安装、三大核心与执行流程 一、redux的基本介绍二、redux的安装三、redux核心概念3.1 action3.2 reducer3.3 store 四、Redux代码执行流程五、加减案例练习 一、redux的基本介绍 redux中文官网Redux 是 React 中最常用的状态管理工具状态容器React 只是 DOM 的一个抽象层UI 库并不是 Web 应用的完整解决方案。因此 React 在涉及到数据的处理以及组件之间的通信时会比较复杂 不使用redux 与 使用redux的区别 (组件之间的通讯问题) 不使用redux 1.只能使用父子组件通讯、状态提升等 React 自带机制 2.处理远房亲戚(非父子)关系的组件通讯时乏力3.组件之间的数据流混乱出现 Bug 时难定位 使用redux 1.集中式存储和管理应用的状态2.处理组件通讯问题时无视组件之间的层级关系 3.简化大型复杂应用中组件之间的通讯问题4.数据流清晰易于定位 Bug 二、redux的安装 npm i redux三、redux核心概念 为了让代码各部分职责清晰、明确Redux 代码被分为三个核心概念action/reducer/store action - reducer - storeaction动作描述要做的事情reducer函数更新状态store仓库整合 action 和 reducer 类比生活中的例子来理解三个核心概念 1.action相当于公司中要做的事情比如软件开发、测试打扫卫生等2.reducer相当于公司的员工负责干活的3.store相当于公司的老板4.流程老板(store)分配公司中要做的事情(action)给员工(reducer)员工干完活把结果交给老板 3.1 action action描述要做的事情项目中的每一个功能都是一个 action 计数器案例计数器加1、减1购物车案例获取购物车数据、切换商品选中状态项目登录退出等 特点 只描述做什么JS 对象必须带有 type 属性用于区分动作的类型根据功能的不同可以携带额外的数据比如payload 有效载荷也就是附带的额外的数据配合该数据来完成相应功能 核心代码 (原生html中使用) !DOCTYPE html html langenheadmeta charsetUTF-8 /meta nameviewport contentwidthdevice-width, initial-scale1.0 /titleDocument/title!-- 引入redux --script src./node_modules/redux/dist/redux.js/script/headbodydiv1/divbutton1/buttonbutton-1/button/bodyscript//1.action 是一个函数 必须有type属性//1.1原始创建// const action{// type:ADD// }//1.2 动态action 函数创建// const Add () {// return {// type: ADD,// }// }//简写 并传参 使用()包裹对象const Add (id) ({ type: ADD, id })console.log(action, Add(3))/script /html 3.2 reducer reducer函数用来处理 action 并更新状态是 Redux 状态更新的地方特点 函数签名为(prevState, action) newState接收上一次的状态和 action 作为参数根据 action 的类型执行不同操作最终返回新的状态注意该函数一定要有返回值即使状态没有改变也要返回上一次的状态约定reducer 是一个纯函数并且不能包含 side effect 副作用(比如不能修改函数参数、不能修改函数外部数据、不能进行异步操作等)纯函数相同的输入总是得到相同的输出1.不要直接修改参数 state 的值也就是不要直接修改当前状态而是根据当前状态值创建新的状态值2.不要使用 Math.random() / new Date() / Date.now() / ajax 请求等不纯的操作3.不要让 reducer 执行副作用side effect 核心代码 (原生html中使用) !DOCTYPE html html langenheadmeta charsetUTF-8 /meta nameviewport contentwidthdevice-width, initial-scale1.0 /titleDocument/title!-- 引入redux --script src./node_modules/redux/dist/redux.js/script/headbodydiv1/divbutton1/buttonbutton-1/button/bodyscript//reducer 接收两个参数 必须有返回值 必须是纯函数//参数1 上一次的状态//参数2 action//累加const Add (num) ({ type: ADD, num })//类减const Sub (num) ({ type: SUB, num })//reducer// const reducer (state, action) {// return reducer返回// }const reducer (state 0, action) {//使用switch caseswitch (action.type) {case ADD:return state 1case SUB:return state - 1default:return state}}console.log(减法, reducer(1, Sub()))console.log(加法, reducer(1, { type: ADD }))/script /html3.3 store store仓库Redux 的核心整合 action 和 reducer特点 一个应用只有一个 store维护应用的状态获取状态store.getState()发起状态更新时需要分发 actionstore.dispatch(action)创建 store 时接收 reducer 作为参数const store createStore(reducer)订阅(监听)状态变化const unSubscribe store.subscribe(() {})取消订阅状态变化 unSubscribe() 核心代码 (原生html中使用) !DOCTYPE html html langenheadmeta charsetUTF-8 /meta nameviewport contentwidthdevice-width, initial-scale1.0 /titleDocument/title!-- 引入redux --script src./node_modules/redux/dist/redux.js/script/headbodydiv1/divbutton1/buttonbutton-1/button/bodyscript//累加const Add (num) ({ type: ADD, num })//类减const Sub (num) ({ type: SUB, num })function reducer(state 100, action) {//使用switch caseswitch (action.type) {case ADD:return state 1case SUB:return state - 1default:return state}}//因为不是es6 引入 全局有一个window.Reduxconsole.log(window.Redux, window.Redux)//解构 createStoreconst { createStore } window.Reduxconsole.log(createStore, createStore)//创建store 参数一必传 (reducer)const store createStore(reducer)console.log(store, store)//dispatch getState subscribe//1.获取redux中的数据store.getState()console.log(store.getState, store.getState())//2.订阅:只要state发生变化 这个订阅的回调函数 就会执行store.subscribe(() {console.log(订阅, store.getState())})//3.发起状态更新时需要分发 actionstore.dispatch(Add())console.log(store.getState, store.getState())store.dispatch(Sub())console.log(store.getState, store.getState())/script /html 四、Redux代码执行流程 1.创建 store 时Redux 就会先调用一次 reducer来获取到默认状态2.分发动作 store.dispatch(action)更新状态3.Redux store 调用 reducer 传入上一次的状态当前示例中就是10和 action{ type: increment }计算出新的状态并返回4.reducer 执行完毕后将最新的状态交给 storestore 用最新的状态替换旧状态状态更新完毕 import { createStore } from redux const store createStore(reducer)// reducer(10, { type: increment }) function reducer(state 10, action) {console.log(reducer:, state, action)switch (action.type) {case increment:return state 1default:return state} }console.log(状态值为, store.getState()) // 10// 发起更新状态 // 参数 action 对象 store.dispatch({ type: increment }) // 相当于 reducer(10, { type: increment })console.log(更新后, store.getState()) // 11五、加减案例练习 准备两个按钮 点击加号按钮 数值1 点击减号按钮 数值-1 实现代码 !DOCTYPE html html langenheadmeta charsetUTF-8 /meta nameviewport contentwidthdevice-width, initial-scale1.0 /titleDocument/title!-- 引入redux --script src./node_modules/redux/dist/redux.js/script/headbodydiv1/divbutton classadd1/buttonbutton classsub-1/button/bodyscript//第一步 创建action//加法const Add (num) ({ type: ADD, num })//减法const Sub (num) ({ type: SUB, num })//第二步 创建 reducerconst reducer (state 100, action) {switch (action.type) {case ADD:return state 1case SUB:return state - 1default:return state}}//第三步 引入store//3.1 解构出store 并传递reducerconst { createStore } window.Reduxconst store createStore(reducer)//3.2 store.getState获取redux中的数据 初始原始值document.querySelector(div).innerHTML store.getState()//3.3 store.subscribe 订阅获取state变化store.subscribe(() {console.log(值发生变化, store.getState())document.querySelector(div).innerHTML store.getState()})//3.4 绑定点击事件 并调用store.dispatch 分发actiondocument.querySelector(.add).onclick function () {store.dispatch(Add())}document.querySelector(.sub).onclick function () {store.dispatch(Sub())}/script /html
http://www.w-s-a.com/news/117750/

相关文章:

  • 安徽建设厅网站首页网站开发aichengkeji
  • 自贡网站制作荣茂网站建设
  • 什么做的网站吗正规的机械外包加工订单网
  • 网络工程公司的业务邵阳seo快速排名
  • 博主怎么赚钱网站seo找准隐迅推
  • 营销号经典废话北京网站建设公司网站优化资讯
  • 一六八互联网站建设怎么做套版网站
  • wordpress 书站建筑公司简介范文大全
  • 建设官方网站多少鲜花网站建设的主要工作流程
  • 卖主机网站轻量wordpress主题
  • 网站建设规划书结构制作一个自己的网站
  • 外贸网站商城建设做网站和推广
  • 网站建设微信群免费简约ppt模板
  • 哈尔滨网站设计公司哪家更好shopify和wordpress
  • 岚县网站建设网站建设中效果
  • 网站建设软文推广网站建设分金手指排名十四
  • 网站建设要什么知识广州注册公司地址怎么解决
  • 自己可以做开奖网站吗wordpress和hexo
  • 成都网站关键词优化wordpress价格
  • 网站开发后端站建设 app开发网站
  • 毕业设计做网站好的想法开发网站代码量
  • 西宁网站建设排名wordpress的站点地址如何配置
  • 医院网站建设 价格app和网站开发的成本
  • 常见的网站开发工具山东建设厅官方网站李兴军
  • 二级院系网站建设情况做网站域名是什么意思
  • 网站开发双语辽宁省建设厅网站怎样下载表格
  • 网站后台密码怎么修改百度查重免费入口
  • 衡阳网站页面设计公司绍兴网站设计
  • 青岛手机建站多少钱做图表的网站 免费
  • 如何去建立和设计一个公司网站开封建设教育协会网站