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

广东省住房和建设网站鹤壁市建设局网站

广东省住房和建设网站,鹤壁市建设局网站,网站站点建设端口号的作用,导游网站如何建设的1. 认识Redux Toolkit Redux Toolkit 是官方推荐的编写 Redux 逻辑的方法。 通过传统的redux编写逻辑方式#xff0c;会造成文件分离过多#xff0c;逻辑抽离过于繁琐#xff08;具体可看上篇文章 Redux详解一#xff09;#xff0c;React官方为解决这一问题#xff0c;推…1. 认识Redux Toolkit Redux Toolkit 是官方推荐的编写 Redux 逻辑的方法。 通过传统的redux编写逻辑方式会造成文件分离过多逻辑抽离过于繁琐具体可看上篇文章 Redux详解一React官方为解决这一问题推荐使用Redux Toolkit第三方包将redux逻辑聚合到一个文件中实现解决上面的问题 Redux Toolkit 也成为 “RTK”。 npm install reduxjs/toolkit Redux Toolkit的核心API主要是如下几个 configureStore: 包装createStore以提供简化的配置选项和良好的默认值。它可以自动组合你的 slice reducer添加你提供的任何 Redux 中间件redux-thunk默认包含并启用 Redux DevTools Extension。 createSlice:  接受 reducer 函数的对象、切片名称和初始状态值并自动生成切片 reducer 并带有相应的 actions 。 createAsyncThunk:  接受一个动作类型字符串和一个返回承诺的函数并生成一个pending/fulfilled/rejected基于该承诺分派动作类型的 thunk相当于对异步操作的reducer处理例如网络请求。 2. createSlice的使用 createSlice 主要包含如下几个参数: name用户标记slice的名词; initialState 初始化; reducers 相当于之前的reducer函数; const categorySlice createSlice({name: category,initialState: {category: hello world,banners: [],recommends: []},reducers: {changeCategory(state, action) {state.category action.payload}} })export const { changeCategory } categorySlice.actionsexport default categorySlice.reducer 3. store的创建 configureStore 用于创建store对象常见参数如下 reducer将slice中的reducer可以组成一个对象传入此处; middleware 可以使用参数传入其他的中间件; devTools 是否配置devTools工具默认为true; import { configureStore } from reduxjs/toolkitimport counterReducer from ./features/counter import homeReducer from ./features/home import userInfoReducer from ./features/userInfo import categoryReducer from ./features/category/category// react-toolkit工具包使用方式 const store configureStore({reducer: {counter: counterReducer,home: homeReducer,userInfo: userInfoReducer,category: categoryReducer} })export default store 4. Redux Toolkit的异步操作 以往对于redux中的异步操作通过redux-thunk中间件让dispatch中可以进行异步操作。 Redux Toolkit默认已经给我们继承了Thunk相关的功能createAsyncThunk 例如 import { createSlice, createAsyncThunk } from reduxjs/toolkit import axios from axiosexport const fetchHomeMultidataActions createAsyncThunk(fetch/homeMultidata, async () {const res await axios.get(http://123.207.32.32:8000/home/multidata)return res.data }) 当createAsyncThunk创建出来的action被dispatch时会存在三种状态 pendingaction被发出但是还没有最终的结果 fulfilled 获取到最终的结果有返回值的结果 rejected 执行过程中有错误或者抛出了异常 类似于promise, 参考promise的执行状态 Redux Toolkit在createSlice中通过extraReducer参数可以监听这些状态的过程 import { createSlice, createAsyncThunk } from reduxjs/toolkit import axios from axiosexport const fetchHomeMultidataActions createAsyncThunk(fetch/homeMultidata, async () {const res await axios.get(http://123.207.32.32:8000/home/multidata)return res.data })const categorySlice createSlice({name: category,initialState: {category: hello world,banners: [],recommends: []},reducers: {changeCategory(state, action) {state.category action.payload}},extraReducers: {[fetchHomeMultidataActions.pending](state, action) {console.log(pending);},[fetchHomeMultidataActions.fulfilled](state, {payload}) {state.banners payload.data.banner.liststate.recommends payload.data.recommend.list},[fetchHomeMultidataActions.rejected](state, action) {console.log(rejected);}} })export const { changeCategory } categorySlice.actionsexport default categorySlice.reducer extraReducer还有另外一种写法链式调用 5. redux Toolkit在react的运用 通过Redux Toolkit创建store对于store的数据使用与传统的store数据获取方式一样Redux Toolkit只是在store的初始化与逻辑编写进行了封装。 category.jsx import React, { PureComponent } from react // import { fetchHomeMultidataActions} from ../../store/features/home import { changeCategory, fetchHomeMultidataActions } from ../../store/features/category/category import { connect } from react-reduxexport class Category extends PureComponent {componentDidMount() {// 抽离axios到reduxthis.props.fetchHomeMultidata()}changeCategoryName(name) {this.props.changeCategory(name)}render() {const { userInfo, category, banners, recommends } this.propsreturn (divCategory:h2userInfo: name: {userInfo.name} age: {userInfo.age}/h2h2category: name: {category}/h2button onClick{ e this.changeCategoryName(你好 世界)}修改/buttondivh2banners数据/h2ul{banners.map((item, index) {return li key{index}{item.title}/li})}/ul/divdivh2recommends数据/h2ul{recommends.map((item, index) {return li key{index}{item.title}/li})}/ul/div/div)} }const mapStateToProps (state) ({userInfo: state.userInfo.userInfo,category: state.category.category,banners: state.category.banners,recommends: state.category.recommends })const mapDispatchToProps (dispatch) ({// changeBanners(banners) {// dispatch(changeBannersActions(banners))// },// changeRecommends(recommends) {// dispatch(changeRecommendsActions(recommends))// }fetchHomeMultidata() {dispatch(fetchHomeMultidataActions())},changeCategory(name) {dispatch(changeCategory(name))} })export default connect(mapStateToProps, mapDispatchToProps)(Category)
http://www.zqtcl.cn/news/580434/

相关文章:

  • 爱站站长工具中国建设监理协会官方网站
  • 珠海微信网站开发东莞网站制作方案定制
  • 大学网站建设说明书记的网站域名
  • 网站如何开通支付功能第一ppt课件免费下载官网
  • 做1元夺宝网站挣钱吗美工网站设计收费
  • 华侨城网站开发wordpress页码颜色
  • 上海建站网络公司制作文字图片
  • 平台型网站制作网站建设张世勇
  • 网站建设云南网页游戏大厅都有哪些
  • 网站建设与管理报告书郑州建设银行网站
  • 做网站网页的人是不是思维公司网站建设包括
  • 网站建设都包括哪些网站后台如何上传文件
  • 网站便民服务平台怎么做迁安做网站中的cms开发
  • 做外贸比较好的网站怎么把网站做的好看
  • 有没有在淘宝找人做网站被骗过的台州市环保局网站开发区
  • 公司外文网站制作河南住房和城乡建设厅网站
  • 东莞做网站公司有哪些代码网站推荐
  • 棋类游戏网站开发网站首页顶部图片尺寸
  • 工信部如何查网站备案大连网络推广广告代理
  • 网站建设基本流程心得wordpress首页截断
  • 网站包括哪些内容网站开发的相关技能
  • 百度竞价 百度流量 网站权重qq推广
  • 重庆网站建设总结WordPress简单百度站长插件
  • pc网站转换成微网站工作室推广网站
  • 嘉兴优化网站公司做水果生意去哪个网站
  • 青岛知名网站建设公司排名wordpress商场插件
  • 设计网站猪八戒自己制作logo免费生成器
  • 深圳万齐创享网站建设网站建设基本教程
  • 聊城做网站信息建设工程合同可以分为
  • 网站设计 注意做筹款的网站需要什么资质