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

网站宣传夸大处罚昆山汽车网站建设

网站宣传夸大处罚,昆山汽车网站建设,成都专业建网站,做pc端网站特色一、Redux 集中状态管理工具#xff0c;不需要react即可使用#xff0c;每个store的数据都是独立于组件之外的 vue小链接#xff1a;vuex/pinia 基本使用 Redux将数据修改流程分成三个概念#xff0c;state、action和reducer state - 一个对象 存放我们管理的数据状态 a…一、Redux 集中状态管理工具不需要react即可使用每个store的数据都是独立于组件之外的 vue小链接vuex/pinia 基本使用 Redux将数据修改流程分成三个概念state、action和reducer state - 一个对象 存放我们管理的数据状态 action - 一个对象 描述你如何修改数据 reducer - 一个函数 根据action的描述生成新的state button iddecrement-/button span idcount0/span button idincrement/buttonscript srchttps://unpkg.com/reduxlatest/dist/redux.min.js/scriptscript// 1. 定义reducer函数 // 作用: 根据不同的action对象返回不同的新的state// state: 管理的数据初始状态// action: 对象 type 标记当前想要做什么样的修改function reducer (state { count: 0 }, action) {// 数据不可变基于原始状态生成一个新的状态 所以要返回新对象if (action.type INCREMENT) {return { count: state.count 1 }}if (action.type DECREMENT) {return { count: state.count - 1 }}return state}// 2. 使用reducer函数生成store实例const store Redux.createStore(reducer)// 3. 通过store实例的subscribe订阅数据变化// 回调函数可以在每次state发生变化的时候自动执行store.subscribe(() {console.log(state变化了, store.getState())document.getElementById(count).innerText store.getState().count})// 4. 通过store实例的dispatch函数提交action更改状态 const inBtn document.getElementById(increment)inBtn.addEventListener(click, () {// 增store.dispatch({type: INCREMENT})})const dBtn document.getElementById(decrement)dBtn.addEventListener(click, () {// 减store.dispatch({type: DECREMENT})})// 5. 通过store实例的getState方法获取最新状态更新到视图中/script react中使用redux 相关工具 Redux Toolkit 简化redux书写逻辑 react-redux 链接Redux和React的中间件 npm i reduxjs/toolkit react-redux 安装成功 目录创建 创建src/storemodules存放子模块 counterStore.js //1 导入并创建store import {createSlice} from reduxjs/toolkitconst counterStore createSlice({name:counter,// 初始状态initialState:{count:0},// 更新状态的方法reducers:{inscrement(state){state.count},descrement(state){state.count --}} })const {inscrement, descrement} counterStore.actions const reducer counterStore.reducerexport{inscrement,descrement }export default reducer store/index.js 集成store/modules中所有子模块 import { configureStore } from reduxjs/toolkit; import counterReducer from ./modules/counterStore// 将子模块中的所有store合成一个根store方便访问 const store configureStore({reducer:{counter:counterReducer,} })export default store src/index.js import React from react; import ReactDOM from react-dom/client; import App from ./App; import store from ./store import { Provider } from react-redux;const root ReactDOM.createRoot(document.getElementById(root)); root.render(// 通过react-redux提供的Provider 给组件注入store 使得redux定义的store能够被react组件使用Provider store{store}App //Provider ); App.js useDispatch() 通过这个来派发reducer修改状态 import { useSelector, useDispatch } from react-redux; import {inscrement, descrement} from ./store/modules/counterStore function App() {const { count } useSelector(state state.counter)const dispatch useDispatch()return (div classNameAppbutton onClick{() dispatch(inscrement())}/button{count}button onClick{() dispatch(descrement())}-/button/div); }export default App; 然后就完成了 进阶版-提交action时传参 counterStore.js 增加了一个addToNum函数 //1 导入并创建store import {createSlice} from reduxjs/toolkitconst counterStore createSlice({name:counter,// 初始状态initialState:{count:0},// 更新状态的方法reducers:{inscrement(state){state.count},descrement(state){state.count --},addToNum(state, action){// dispatch调用该方法时传入的参数就存放在action.payloadstate.count action.payload}} })const {inscrement, descrement, addToNum} counterStore.actions const reducer counterStore.reducerexport{inscrement,descrement,addToNum }export default reducer App.js 增加了两个值传入不同参数 import { useSelector, useDispatch } from react-redux; import {inscrement, descrement, addToNum} from ./store/modules/counterStore function App() {const { count } useSelector(state state.counter)const dispatch useDispatch()return (div classNameAppbutton onClick{() dispatch(inscrement())}/button{count}button onClick{() dispatch(descrement())}-/buttonbutton onClick{() dispatch(addToNum(10))} 10/buttonbutton onClick{() dispatch(addToNum(-10))}- 10/button/div); }export default App;再进阶版-异步状态操作 channelStore.js import {createSlice} from reduxjs/toolkit import axios from axiosconst channelStore createSlice({name:channel,initialState:{channelList:[]},reducers:{getChannels(state, action){state.channelList action.payload}} })const {getChannels} channelStore.actions//单独写一个异步action的函数 异步操作处理完毕后再调用同步action修改状态 const getChannelList () {return async(dispatch) {const res await axios.get(http://geek.itheima.net/v1_0/channels)dispatch(getChannels(res.data.data.channels))} }export {getChannelList}const reducer channelStore.reducer export default reducer App.js import { useSelector, useDispatch } from react-redux; import {inscrement, descrement, addToNum} from ./store/modules/counterStore import {getChannelList} from ./store/modules/channelStore import {useEffect} from react function App() {const { count } useSelector(state state.counter)const { channelList } useSelector(state state.channel)const dispatch useDispatch()useEffect(() {dispatch(getChannelList())}, [dispatch])return (div classNameAppbutton onClick{() dispatch(inscrement())}/button{count}button onClick{() dispatch(descrement())}-/buttonbutton onClick{() dispatch(addToNum(10))} 10/buttonbutton onClick{() dispatch(addToNum(-10))}- 10/buttonul{channelList.map(item li key{item.id}{item.name}/li)}/ul/div); }export default App;调试工具redux devtools 直接在chorme商店里下载
http://www.hkea.cn/news/14394387/

相关文章:

  • 网站如何看是哪家公司做的wordpress 码查询
  • 昌乐哪里有做网站的网站开发职业工资
  • 国家级示范校建设网站做网站程序看什么书
  • 网站开发建站微信公众号小程序外国人做的学汉字网站
  • 给期货交易类做网站违法吗中国制造网外贸平台怎么注册
  • 如何用域名访问网站太仓建设工程信息网站
  • 网站新开怎么做营销php网站分类目录程序 网址导航程序 织梦二次开发
  • 济南优化网站个人网站设计开题报告
  • 永康网站建设公司网络公司名字怎么取
  • 常德网站建设 天维代理app推广
  • 做图表的网站知乎用js做网站登录
  • 上海 网站备案系统东莞企业网站建设公司
  • wordpress二手房a标签优化网站
  • 建设官方网站的好处和坏处网站建设教程纯正苏州久远网络
  • 网站运营意义企业所得税怎么算公式
  • 网站维护收费标准用一个域名免费做网站
  • 绵阳个人网站建设职业培训机构哪家最好
  • wordpress多站点分别部署泰安高新区建设局网站
  • 国际学院网站建设的意义棠下手机网站建设电话
  • 做一个平台 网站服务器搭建WordPress产品录入
  • 中心网站设计郑州搜索引擎优化
  • 模板网站的弊端在哪哈尔滨网站优化指导
  • 深圳网站平台建设快速注销网站备案
  • 网站搜索排名和什么有关系休闲吧网站建设
  • 给别人做ppt的网站wordpress进不了文章页面
  • 那里网站建设好wordpress自定义登录界面
  • 空间商网站宣传片制作公司费用
  • 丹江口网站建设世界500强企业排名
  • 网络课程网站模板个人养老金制度的利弊
  • 蚌埠的网站建设郑州最新发布信息