> 安装项目
npx create-react-app learn-react
-
之前
> 挂载时时执行顺序 - render 阶段 constructor 》 componentWillMount(将要挂载时调用,会执行一次或多次)【该钩子函数重命名为 UNSAFE_componentWillMount,不推荐使用,旧的名称在 18 之后不再支持】》 render(渲染) 》 - Commit 阶段【可以使用 DOM】 componentDidMount(挂载后调用) 【适合异步请求数据、定时器、开始订阅】》 > 卸载时时执行顺序 componentWillUnmount(卸载或销毁前调用)【关闭定时器、取消订阅】 》
-
之后
减少 ref 的使用
<label >用户名:<input ref="usernameRef" type="text"/></label>
console.log(this.refs.usernameRef)
<label >密码:<input ref={(ref)=>{this.pwdRef=ref}} type="password" /></label>
import React from "react";
class Login extends React.Component{
constructor(props){
super(props)
this.state = {
name:'',
pwd:""
}
}
nameRef=React.createRef()// createRef的用法【最推荐用法】
pwdRef = null//ref的回调用法
render(){
return <>
<List />
<label >用户名:<input ref={this.nameRef} type="text"/></label>
<label >密码:<input ref={(ref)=>{this.pwdRef=ref}} type="password" /></label>
<button onClick={this.loginDeal}>登录</button>
<p>当前登录信息为:用户名:{this.state.name} 密码:{this.state.pwd}</p>
</>
}
loginDeal=()=>{
console.log(this.nameRef)
this.setState({
pwd:this.pwdRef.value,
name:this.nameRef.current.value
})
}
}
export default Login
- 安装 antd
npm install antd --save
- 安装 antd 图标
npm install @ant-design/icons --save
## 安装 sass
`npm i sass`
npm i @craco/craco
const path = require("path")
module.exports = {
webpack: {
// 配置路径别名
alias: {
"@": path.join(__dirname, "src"),
},
},
}
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "craco eject"
}
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@/*": ["src/*"]
}
}
}
{
"extends": "./path.tsconfig.json"
}
-
- 添加 router 文件目录,添加 index.js 文件
import { createBrowserRouter } from "react-router-dom";
import Login from "./views/system/login/index"
import Layout from "./views/system/layout/index"
import Error from "@/views/layout/error";
const router = createBrowserRouter([
{
path:"/",
element:<Layout />,
errorElement:<Error />
},
{
path:"/login",
element:<Login />,
errorElement:<Error />
}
])
export default router;
-
- 在 src/index.js 目录使用
import React from 'react';
import ReactDOM from 'react-dom/client';
import { RouterProvider } from 'react-router-dom';
import router from "./router"
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<RouterProvider router={router} />
</React.StrictMode>
);
npm install react-router-dom localforage match-sorter sort-by
import { createBrowserRouter } from "react-router-dom";
import Login from "./views/system/login/index"
import Layout from "./views/system/layout/index"
import Error from "@/views/layout/error";
const router = createBrowserRouter([
{
path:"/",
element:<Layout />,
errorElement:<Error />
},
{
path:"/login",
element:<Login />,
errorElement:<Error />
}
])
export default router;