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

大学网站栏目建设wordpress增加用户活跃

大学网站栏目建设,wordpress增加用户活跃,图片网站 模板,网络推广服务开票前言 本文将引导开发者从零基础开始#xff0c;运用vite、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈#xff0c;构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导#xff0c;文章旨在为开发者揭示如何利用这些技术…前言 本文将引导开发者从零基础开始运用vite、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导文章旨在为开发者揭示如何利用这些技术工具从项目构思到最终实现的全过程提供清晰的开发思路和实用的技术应用技巧。 项目gitee地址lbking666666/enqi-admin 本系列文章 使用vitereacttsAnt Design开发后台管理项目一使用vitereacttsAnt Design开发后台管理项目二使用vitereacttsAnt Design开发后台管理项目三使用vitereacttsAnt Design开发后台管理项目四 使用redux 上一章布局组件拆分前组件侧边栏和头部需要有交互根据一个响应式的变量collapsed来进行交互的目前已经把这两部分拆分到了两个子组件header.tsx和sider.tsx中此时需要引入redux来对状态进行管理。 引入redux和 reduxjs/toolkit # 如果你使用 npm:npm install react-redux reduxjs/toolkit -S# 或者你使用 Yarn: yarn add react-redux reduxjs/toolkit 为什么使用 Redux Toolkit Redux Toolkit 是官方推荐的编写 Redux 逻辑的方法。它围绕 Redux 核心并包含我们认为对于构建 Redux 应用必不可少的软件包和功能。Redux Toolkit 简化了大多数 Redux 任务防止了常见错误并使编写 Redux 应用程序更加容易。 无论你是一个想要开发第一个 Redux 应用的新手还是想要简化已有应用经验老道的老手Redux Toolkit 都能帮你写出更好的 Redux 代码。 创建store文件 首先在src文件夹下创建store文件夹新建一个index.ts文件 //store/index.ts import { configureStore } from reduxjs/toolkit; //处理eslint报错 /* eslint-disable typescript-eslint/no-unused-vars */ const store configureStore({reducer: {}, });// 从 store 本身推断 RootState 和 AppDispatch 类型 export type RootState ReturnTypetypeof store.getState; // 推断类型{posts: PostsState, comments: CommentsState, users: UsersState} export type AppDispatch typeof store.dispatch;export default store; 创建reducer 在store文件夹下新建reducers文件夹新增一个文件global.ts //global.ts import { createSlice } from reduxjs/toolkit; import type { RootState } from /store/index.ts;// 定义初始 state 的类型 interface GlobalState {collapsed: boolean; } // 使用该类型定义初始 state const initialState: GlobalState {collapsed: false }; // 创建 slice export const globalSlice createSlice({name: global,// 名称initialState,// 初始 statereducers: {// 定义 reducer 函数该函数接受 state 和 action 作为参数setCollapsed: (state) {// 更新 statestate.collapsed !state.collapsed;},}, });// 为每个 case reducer 函数生成 Action creators export const { setCollapsed } globalSlice.actions; // selectors 等其他代码可以使用导入的 RootState 类型 export const selectCollapsed (state: RootState) state.global.collapsed; // 导出 reducer export default globalSlice.reducer;使用 Hooks 类型 尽管你可以将 RootState 和 AppDispatch 类型导入每个组件, 更好的方式是创建 useDispatch 和 useSelector 钩子的类型定义以便在你的应用程序中使用 对于 useSelector 它不需要你每次输入(state: RootState)对于 useDispatch 默认的 Dispatch 类型不知道 thunk 。为了正确调度 thunk 你需要使用 store 中包含 thunk 中间件类型的特定自定义 AppDispatch 类型并将其与 useDispatch 一起使用。添加一个预先输入的 useDispatch 钩子可以防止你忘记在需要的地方导入 AppDispatch。 由于这些是实际变量而不是类型因此将它们定义在单独的文件中很重要而不是 store 设置文件。这允许你将它们导入到需要使用挂钩的任何组件文件中并避免潜在的循环导入依赖问题。 定义 Hooks 类型 在src文件夹下新增hooks文件夹新增文件UseGlobal.hooks.ts //UseGlobal.hooks import { TypedUseSelectorHook, useDispatch, useSelector } from react-redux; import type { RootState, AppDispatch } from /store/index;// 在整个应用程序中使用而不是简单的 useDispatch 和 useSelector export const useAppDispatch: () AppDispatch useDispatch; export const useAppSelector: TypedUseSelectorHookRootState useSelector; 引入globalReducer 修改store文件夹下的index.ts //store/index.tsimport { configureStore } from reduxjs/toolkit; import globalReducer from ./reducers/global; //处理eslint报错 /* eslint-disable typescript-eslint/no-unused-vars */ const store configureStore({reducer: {global: globalReducer,}, });// 从 store 本身推断 RootState 和 AppDispatch 类型 export type RootState ReturnTypetypeof store.getState; // 推断类型{posts: PostsState, comments: CommentsState, users: UsersState} export type AppDispatch typeof store.dispatch;export default store; 在组件中使用 上一章中的左侧组件和头部组件中有一个响应式变量collapsed现在可以使用redux状态来处理根据Ant Design的代码和组件拆分分析两个组件都需要使用这个collapsed状态所以放在layout文件夹下的index.tsx中获取当前的collapsed值然后通过给组件传参的形式同步两个组件的状态 1.布局组件改造 修改layout文件夹下的index.tsx内容 //layout/index.tsx import React from react; import { Layout } from antd; import { useAppSelector} from /hooks/UseGlobal.hooks; import { selectCollapsed } from /store/reducers/global; import AppHeader from ./header; import AppSider from ./sider; import AppMain from ./main;const App: React.FC () {// 获取全局状态 collapsed 可以使用以下两种方式中的一种//const collapsed:boolean useAppSelector((state) state.global.collapsed);const collapsed: boolean useAppSelector(selectCollapsed);return (Layout classNameapp-layout AppSider collapsed{collapsed} /LayoutAppHeader collapsed{collapsed} /AppMain //Layout/Layout); };export default App;2.侧边组件改造 修改layout文件夹下的sider.tsx //layout/sider.tsx import React from react; import {UploadOutlined,UserOutlined,VideoCameraOutlined, } from ant-design/icons; import { Layout, Menu } from antd; const { Sider } Layout;interface AppSiderProps {collapsed: boolean; } const AppSider: React.FCAppSiderProps ({ collapsed }) {return (Sider trigger{null} collapsible collapsed{collapsed}div classNamedemo-logo-vertical /MenuthemedarkmodeinlinedefaultSelectedKeys{[1]}items{[{key: 1,icon: UserOutlined /,label: nav 1,},{key: 2,icon: VideoCameraOutlined /,label: nav 2,},{key: 3,icon: UploadOutlined /,label: nav 3,},]}//Sider); }; export default AppSider;3.头部组件改造 修改layout文件夹下的header.tsx //layout/header.tsx import React from react; import { Button, Layout, theme } from antd; import { MenuFoldOutlined, MenuUnfoldOutlined } from ant-design/icons; const { Header } Layout; interface AppSiderProps {collapsed: boolean; } const AppHeader: React.FCAppSiderProps ({ collapsed }) {const {token: { colorBgContainer },} theme.useToken();return (Header style{{ padding: 0, background: colorBgContainer }}Buttontypetexticon{collapsed ? MenuUnfoldOutlined / : MenuFoldOutlined /}style{{fontSize: 16px,width: 64,height: 64,}}//Header); }; export default AppHeader;4.添加事件 如上图所示点击红框的按钮需要做到伸缩左侧的侧边栏固需要在这里添加事件 代码如下 //layout/header.tsx import React from react; import { Button, Layout, theme } from antd; import { MenuFoldOutlined, MenuUnfoldOutlined } from ant-design/icons; import { useAppDispatch } from /hooks/UseGlobal.hooks; import { setCollapsed } from /store/reducers/global; const { Header } Layout; interface AppSiderProps {collapsed: boolean; } const AppHeader: React.FCAppSiderProps ({ collapsed }) {const {token: { colorBgContainer },} theme.useToken();const dispatch useAppDispatch();const handleCollapsed () {//更新全局状态 collapseddispatch(setCollapsed());};return (Header style{{ padding: 0, background: colorBgContainer }}Buttontypetexticon{collapsed ? MenuUnfoldOutlined / : MenuFoldOutlined /}style{{fontSize: 16px,width: 64,height: 64,}}onClick{handleCollapsed}//Header); }; export default AppHeader;查看效果点击按钮左侧边栏可以伸缩 后续 本篇文章为项目引入了redux和怎么在项目中使用做了说明代码已经同步到了gitee仓库下一篇会丰富头部组件使用redux增加主题风格配置和左侧菜单抽离为单独组件根据不同的菜单点击进入不同组件
http://www.dnsts.com.cn/news/230705.html

相关文章:

  • 宁波网站建设应届生深圳seo关键词优化
  • 湖北城乡建设网站返利网网站框架目录
  • 台州网站排名山东互联网公司排名
  • Wordpress球队网站让人做网站需要准备什么软件
  • 搭建视频播放网站网站建设公司东莞
  • 重庆建设车业官方网站网站升级 云南省建设注册考试中心
  • 免费软件下载官网济南seo网站优化
  • 网站域名备案系统建设网站一般要多久到账
  • 网页设计与网站建设考试题二级域名站群
  • 深圳网站定制公司目前网站开发有什么缺点
  • 深圳坪山网站建设公司做网站怎么分手机版和电脑版
  • 个人网站备案不能盈利长沙市互联网加网站
  • 网站建立者成都公司网站设计
  • 网站建设平台赚钱东莞设计公司网站
  • 网站建设艾瑞市场分析在线资源链接
  • 自己建设一个平台网站多少钱php 做的应用网站
  • 建设门户网站的意义建站系统开发
  • 甘肃省城乡和住房建设厅网站唐河做网站
  • 黑龙江建设监理协会网站南京外贸网站建设公司
  • 新手做网站网站空间永久免费
  • 内蒙古建设银行网站产品展示型网站建设
  • wordpress 主题缓存公司搜索seo
  • 深圳网站建设网站制作钱宝网站怎么做任务
  • 给你一个网站你怎么做的网站建设评价
  • 郫县网站制作电脑培训班的课程
  • 西安网站建设网络公司熊掌号dw做框架网站
  • 网站开发要源码多少钱苏州建设工程招标网站
  • wordpress百度站内搜索绍兴建站服务
  • 小程序可以做网站吗乐陵seo营销
  • 网站设置专栏有什么好处做众筹网站有哪些