React项目初始化

创建项目

$ npx create-react-app app01     // 创建指定名称的项目

启动项目

$ cd app01
$ npm start

项目降级

$ npm install --force react@17 react-dom@17 -S
//安装路由
$ npm install react-router-dom@5 -S //路由
//界面UI
$ npm install antd -S		// 直接使用
 	或者
$ yarn add antd   // 使用facebook的yarn包管理器添加依赖模块
//高级配置  安装一个独立的管理项目的配置模块:@craco/craco
$ npm i @craco/craco -S

编辑src/index.js文件,修改启动模块

import React from 'react';
// @18
// import ReactDOM from 'react-dom/client';
// @17
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';

// @18
// const root = ReactDOM.createRoot(document.getElementById('root'));
// root.render(
//   <React.StrictMode>
//     <App />
//   </React.StrictMode>
// );

// @17
ReactDOM.render(
  <React.StrictMode>
    <App/>
  </React.StrictMode>,
  document.querySelector("#root")
)

高级配置

安装一个独立的管理项目的配置模块:@craco/craco

 npm i @craco/craco -S

编辑package.json修改启动命令

"scripts": {
-   "start": "react-scripts start",			// 原有命令
-   "build": "react-scripts build",
-   "test": "react-scripts test",
+   "start": "craco start",							// 修改后命令
+   "build": "craco build",
+   "test": "craco test",
}

项目中添加配置文件app01/craco.config.js,启用less(css预处理语言)语法

$ npm i craco-less -S
const CracoLessPlugin = require('craco-less');

module.exports = {
  plugins: [
    {
      plugin: CracoLessPlugin,
      options: {
        lessLoaderOptions: {
          lessOptions: {
            modifyVars: { '@primary-color': '#1DA57A' },
            javascriptEnabled: true,
          },
        },
      },
    },
  ],
};

修改:src/App.css,修改为src/App.less,内容修改如下:

@import '~antd/dist/antd.less';

修改:src/App.jsx组件,修改引入方式:

// import './App.css'
import './App.less'

阿里镜像

npm set registry http://registry.npmmirror.com

状态管理redux

npm i redux -S

解耦合

npm install react-redux -S
路由封装

router/RouterView.jsx`

import React, {Suspense} from 'react'
import { Spin } from 'antd'
import {
 Switch,
 Route,
 Redirect
} from 'react-router-dom'

export default function RouterView(props) {
 const { routes } = props
 return (<Suspense fallback={Spin}>
   <Switch>
     {
       routes.map(route => {
         if(route.redirect) {
           return <Route key={route.name}
                         path={route.path}
                         exact={route.exact}>
                     <Redirect to={route.redirect}/>
                   </Route>
         } else {
           return <Route key={route.name}
                         path={route.path}
                         render={props => {
                           return <route.component {...props} children={route.children}/>
                         }}></Route>
         }
       })
     }
   </Switch>
 </Suspense>)
}
axios封装

plugins/http.js

// 封装axios 
import axios from 'axios'
import {Component} from 'react'

const instance =axios.create({
    baseURL:'http://localhost:9527'
})

instance.interceptors.request.use(request =>{
    return request
})
instance.interceptors.response.use(response =>{
    return response.data
})

Component.prototype.$http = instance

export default instance

需要安装的npm插件
npm install  react@17 react-dom@17 react-router-dom@5 antd @craco/craco craco-less redux react-redux axios --force -S

异步请求thunk

npm i redux-thunk -S

调试模块

 npm i redux-devtools-extension -S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值