react18+antd5从0到1的后台管理系统(二)

上一节介绍了创建项目,并简单使用antd5,这一章节主要介绍必不可少的路由以及状态管理器,如有不正确地方,欢迎大佬指正!!!!

路由我采用React Router 6版本,个人喜欢使用新版本的东西,跟随时代脚步嘛。

状态管理器还是采用最基本的redux,这个教程网上也是很多,遇到问题方便查阅嘛。

一、路由安装及简单使用

  • 安装

        现在react router已经默认版本是V6所以可以直接使用命令安装

yarn add react-router-dom
  • 引入路由组件,并将App组件注入路由组件中 
// main.jsx


import React from 'react'
import ReactDOM from 'react-dom/client'
import {BrowserRouter as Router} from "react-router-dom";
// import App from './App'
// import './index.css'
import Test from "@/views/Test";

ReactDOM.createRoot(document.getElementById('root')).render(
    <Router>
        <React.StrictMode>
            {/*<App />*/}
            <Test />
        </React.StrictMode>
    </Router>
  
)
  • 与React Router5不同的是,Router6中的Route需要嵌套在Routers组件内

        >Routes 作用和Switch类似,都是作用于Route的容器,Routes中的Route只有一个会被匹配

        >Router6中,通过element属性来注入要挂载的组件

// Test.jsx

import {Component} from "react";
import { Button } from 'antd';
import {Routes,Route} from 'react-router-dom'

const Home =()=>{
    return(
        <div>首页</div>
    )
}
const About =()=>{
    return(
        <div>关于</div>
    )
}

export default class Test extends Component{
    render() {
        return(
            <Routes>
                <Route path='/' element={<Home/>} ></Route>
                <Route path='/about' element={<About/>} ></Route>
            </Routes>
        )
    }
}

     Home组件为默认显示的,若地址栏跟上/about就显示了about组件的内容,下图为两者区别

  • Link标签的使用和Router5的差别不大,你们自我尝试就知道了
import { Link } from 'react-router-dom';

            <ul>
                <li>
                    <Link to='/'>主页</Link>
                </li>
                <li>
                    <Link to='/about'>关于</Link>
                </li>
            </ul>
  •  关于react函数组件中初始化会调用两次

 

 

 这是因为开启了StrictMode严格模式。像下面关掉就好了。

StrictMode 是一个用来检查项目中潜在问题的工具。StrictMode 不会渲染任何可见的 UI,它为其后代元素触发额外的检查和警告。

严格模式检查仅在开发模式下运行;它们不会影响生产构建。

路由就简单介绍一下,后面实践最重要,若想要多了解一点router的可以去官方文档查看;

下面推荐一篇详细一点的router6的介绍文章吧吗,有兴趣的可以看看,基本功能都有介绍;

react router6使用 - Coderz1 - 博客园

二、状态管理器安装及简单使用

1. 安装redux

yarn add redux

2. 创建store文件夹下index.js 创建状态管理器

// store/index.jsx


import {createStore} from 'redux'

//创建reducer以及初始化状态
const reducer = (state = {
    count: 1
}, action) => {
    // action中type代表动作的标识,用于触发行为,payload代表传递的参数
    switch (action.type) {
        case 'ADD':
            return {...state,count:state.count+action.payload}
        case 'REDUCE':
            return {...state,count:state.count-action.payload}
        default:
            return state
    }
}

//创建状态管理器
const store = createStore(reducer)
export default store

在组件中使用

// Test.jsx


import {Component,useState} from "react";
import { Button } from 'antd';
import {Routes,Route} from 'react-router-dom'
import store from "@/store"


const Home =()=>{
    const [count,setCount] = useState(store.getState().count)

    const add=()=>{
        store.dispatch({type:"ADD",payload:1})
        setCount(store.getState().count)
    }
    const reduce=()=>{
        store.dispatch({type:"REDUCE",payload:1})
        setCount(store.getState().count)
    }
    return(
        <div>
            <h2>首页</h2>
            <div>初始值:{count}</div>
            <Button type="primary" onClick={add}>加1</Button>
            <Button type="primary" onClick={reduce}>减1</Button>
        </div>
    )
}
const About =()=>{
    return(
        <div>关于</div>
    )
}

export default class Test extends Component{
    render() {
        console.log('这是测试页面')
        return(
            <Routes>
                <Route path='/' element={<Home/>} ></Route>
                <Route path='/about' element={<About/>} ></Route>
            </Routes>
        )
    }
}

以上就是React Router 6以及redux的简单介绍了,若想深究需要自行去度娘更深层的文章,我这里就不做过多赘述了,还是以实战为主,下一章就开始正式搭建了!!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值