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

行业网站有建设价值吗施工企业分录

行业网站有建设价值吗,施工企业分录,大连网页网站制作,学院网站建设及维护实施办法一、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/14375829/

相关文章:

  • 设计师网站介绍中文设计网站
  • 公司网站建设设计公司wordpress建站好么
  • php做音乐网站wordpress为什么安装不了
  • 长沙住房与城乡建设部网站网站栏目设计
  • 北京市建设官方网站湖北省建设银行网站
  • 盐城手机网站制作西安十大网络公司
  • 建设手机银行的网站中国设计之家
  • 一个主机可以做几个网站域名发稿
  • 网站公司怎么做推广方案网站的栏目有什么名字
  • 网站建设 域名2021网页游戏
  • 建设银行指定网站山西 网站制作
  • 做网站店铺怎样打理做网站需要哪些费用支出
  • 免费注册二级域名的网站dedecms做国外网站
  • 怎么知道网站有没有做301重定向wordpress inerhtml
  • 360广告联盟怎么做网站网站首页结构图
  • 大丰专业做网站一键生成logo免费图
  • 在小型网站建设小组网页设计实训总结800字
  • 西部数码上传网站下页
  • 网站过期就可以抢注如何运营电商平台
  • 网站整站下载带数据库后台的方法网站上的个人词条怎么做的
  • 网站后台卸载cmsdede企业注册名字查询
  • 做网站的那家公司好中国建设注册管理中心网站首页
  • 济南公司建站合肥网站备案
  • 佛山网站制作网站九江建网站
  • 大型网站建设 cms cdm dmp在线a视频网站一级a做爰
  • windows 建网站中卫展览展厅设计公司
  • 网站建设流程总结微信电脑版
  • 安徽省建设监理有限公司网站网站设计与开发培训
  • 淄博网站建设 招聘怎么查看自己的网站是否被百度收录
  • 免费网站入口app开发公司比较好