创建react脚手架项目——demo(react18 + react-router 6)

news/2024/6/1 22:46:24 标签: react.js, 前端, 前端框架

创建react脚手架项目——demo(react18 + react-router 6)

  • 1. 安装 create-react-app
    • 1.1 执行安装命令
    • 1.2 安装遇到的问题
      • 1.2.1 问题1——npm ERR! code ENOTFOUND
  • 2. 创建项目
    • 2.1 创建项目命令
    • 2.2 查看项目结构
      • 2.2.1 目录结构
      • 2.2.2 注意点
  • 3. 启动项目
  • 4. react-demo
  • 5. react-demo优化
    • 5.1 安装路由
    • 5.2 遇到的问题
      • 5.2.1 No routes matched location "/dog"
      • 5.2.2
    • 5.3 项目简单设计
      • 5.3.1 项目效果
      • 5.3.2 项目目录结构
      • 5.3.3 核心代码
    • 5.4 项目下载

1. 安装 create-react-app

1.1 执行安装命令

  • 全局安装 create-react-app
    npm i -g create-react-app
    
    sudo npm i -g create-react-app
    
    在这里插入图片描述
  • 说明:不建议安装全局,建议使用 npx 命令安装,具体可参考官网,如下:
    npx create-react-app my-app
    
    在这里插入图片描述
    官网:
    https://zh-hans.legacy.reactjs.org/docs/create-a-new-react-app.html.

1.2 安装遇到的问题

1.2.1 问题1——npm ERR! code ENOTFOUND

  • 问题描述,如下:
    npm ERR! code ENOTFOUND
    npm ERR! syscall getaddrinfo
    npm ERR! errno ENOTFOUND
    npm ERR! network request to https://registry.npmmirror.com/create-react-app failed, reason: getaddrinfo ENOTFOUND registry.npmmirror.com
    npm ERR! network This is a problem related to network connectivity.
    npm ERR! network In most cases you are behind a proxy or have bad network settings.
    npm ERR! network 
    npm ERR! network If you are behind a proxy, please make sure that the
    npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
    
    在这里插入图片描述
  • 解决问题
    • 如果使用了clashx,可能是它问题,解决如下
      • 取消代理即可
      • 如果取消代理、退出clashx之后,电脑死活还是不能上网,解决方式如下:
        • 1⃣️:更新clashx;
        • 2⃣️:如果已经是最新版本了,那就处理一下dns,处理方式如下(Mac):
          mac电脑点wifi图标–点网络偏好设置–高级–dns,点加号,新增114.114.114.114保存后就可以上网了。
          在这里插入图片描述
    • 如果是其他问题,参考下面帖子:
      npm command create-react-app failled.

2. 创建项目

2.1 创建项目命令

  • 命令如下:
    create-react-app react-demo1
    
    在这里插入图片描述

2.2 查看项目结构

  • 如下:
    在这里插入图片描述

2.2.1 目录结构

2.2.2 注意点

  • 注意新版和老板的不一样,这里自动生成的是react18,需要注意的点是,如下:
    在这里插入图片描述
  • 详细可参考官网
    如何升级到 React 18.
    在这里插入图片描述

3. 启动项目

  • 启动命令:
    npm start
    
    在这里插入图片描述
    在这里插入图片描述

4. react-demo

  • 创建一个reacr-demo2写自己的小demo,主要是3个文件,如下:
    在这里插入图片描述
    在这里插入图片描述

  • 启动看效果:
    在这里插入图片描述

  • 是能启动,但是好无聊,所以还是简单写点东西吧,继续……

5. react-demo优化

5.1 安装路由

  • 项目中会用到,所以先安装了
    npm i react-router-dom
    
  • 引入:
    import {
        BrowserRouter as Router,
        Route,
        Link
      } from 'react-router-dom'
    
  • 需要注意的问题是,版本不同可能语法不同,我这里安装的是最新版本6,5的话可能语法不同,需要注意:
    在这里插入图片描述
  • 更多详细介绍,可参考官网:
    • https://react-router.docschina.org/.
    • react-router6----https://reactrouter.com/en/main.

5.2 遇到的问题

5.2.1 No routes matched location “/dog”

  • 问题描述如下:

    No routes matched location "/dog"  
    

    在这里插入图片描述

  • 解决问题,注意新版写法,如下:

    <Routes>
        <Route exact path="/" element={<Home/>} />
        <Route path="/dog" element={<Dog/>} />
        <Route path="/cat" element={<Cat/>} />
    </Routes>
    

    在这里插入图片描述

  • 更多参考,请去官网看例子

    • https://reactrouter.com/en/6.6.1/start/examples.
    • https://github.com/remix-run/react-router/blob/dev/examples/basic/src/App.tsx.

5.2.2

5.3 项目简单设计

5.3.1 项目效果

  • 如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5.3.2 项目目录结构

  • 如下:
    在这里插入图片描述

5.3.3 核心代码

  • App.js 如下:

    import PetHeader from './PetHeader/index'
    import PetBottom from './PetBottom/index'
    import PetLeft from './PetLeft';
    
    function App() {
      return (
        <div>
          <PetHeader></PetHeader>
          <PetLeft></PetLeft>
          <PetBottom/>
        </div>
      );
    }
    
    export default App;
    
  • PetLef 组件
    在这里插入图片描述

    import React from "react"
    import {BrowserRouter,Route,Routes,Link} from 'react-router-dom'
    import Home from "../Home"
    import Dog from "../Dog"
    import Cats from "../Cat/Cats"
    import './index.css'
    
    class PetLef extends React.Component{
        render(){
            return(
                <BrowserRouter>
                    <div className="myMainData left" >
                        {/* 编写路由链接  靠路由链接实现切换组件 */}
                        <ul>
                            <li><Link to="/">Home</Link></li>
                            <li><Link to="/dog">狗狗信息</Link></li>
                            <li><Link to="/cats">猫咪信息</Link></li>
                        </ul>
                    </div>
    
                    <div className="myMainData right" >
                            {/* 注册路由 */}
                        <Routes>
                            <Route exact path="/" element={<Home/>} />
                            <Route path="/dog" element={<Dog/>} />
                            <Route path="/cats/*" element={<Cats/>} />
                        </Routes>                       
                    </div>
                </BrowserRouter>
            )
        }
    }
    
    export default PetLef;
    
    
  • Cats 和 Cat组件
    在这里插入图片描述

    import React from "react";
    import CatInfo from "./Info/CatInfo";
    import {Route,Routes,Link} from 'react-router-dom'
    
    class Cats extends React.Component{
        state = {
            cats:[
                {catId:'A1001',catName:'点点',catAge:5,catKind:'德文'},
                {catId:'A1002',catName:'阿苔',catAge:6,catKind:'德文'},
                {catId:'A1003',catName:'花花',catAge:2,catKind:'布偶'}
            ]
        };
        render(){
            const {cats} = this.state;
            return(
                <div>
                    <h2>猫咪信息</h2>
                    <ul>
                        {
                            cats.map((cat)=>{
                                return(
                                    <li key={cat.catId}>
                                        {/* <Link to='/cats/info/'> */}
                                        <Link to={`/cats/info/${cat.catId}/${cat.catName}`}>
                                            {cat.catId}--{cat.catName}--{cat.catAge}--{cat.catKind}
                                        </Link>
                                    </li>
                                )
                            })
                        }
                    </ul>
                    <br /><br />
                    <Routes>
                         {/* <Route path='info' element={<CatInfo/>} /> */}
                         <Route path='info/:catId/:catName' element={<CatInfo/>} />
                    </Routes>
                </div>
            )
        }
    }
    export default Cats;
    
    import React from "react";
    
    //这个注意:router6新特性,新增的hooks  必须函数式组件
    import { useParams } from "react-router-dom";
    
    function Cat(){
        // console.log(useParams());
        let {catId,catName} = useParams();
        return(
            <div>
                <h3>
                    {catId}--{catName}
                </h3>
            </div>
        )
    }
    
    export default Cat;
    

5.4 项目下载

  • 只是上面展示的一个demo,需要的又有更多需求的,自行优化
  • 需要的,可下载:
    react入门demo(react18 + react-router6).

http://www.niftyadmin.cn/n/5025983.html

相关文章

Django系列:Django简介与MTV架构体系概述

Django系列 Django简介与MTV架构体系概述 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/132890054 【介…

实战经验分享:如何通过HTTP代理解决频繁封IP问题

在网络爬虫和数据采集等应用中&#xff0c;频繁遇到目标网站封锁或限制IP的情况是非常常见的。为了解决这个问题&#xff0c;使用HTTP代理是一种有效的方法。本文将与您分享一些实战经验&#xff0c;帮助您通过HTTP代理解决频繁封IP问题&#xff0c;确保您的数据采集工作顺利进…

主从模式详解

主从模式是分布式系统中&#xff0c;多个服务器部署redis的一种方式。分布式系统主要是解决“单点问题”。 如果某个服务器程序&#xff0c;只有一个节点&#xff08;只有一个物理服务器&#xff0c;来部署服务器程序&#xff09;。存在可用性问题&#xff0c;如果这个机器挂了…

【Node.js操作SQLite指南】

Node.js操作SQLite指南 在本篇博客中&#xff0c;我们将学习如何在Node.js中操作SQLite数据库。我们将使用sqlite3模块来创建数据库、创建表以及进行数据的增删改查操作。 文章目录 Node.js操作SQLite指南安装sqlite3模块创建数据库创建表数据的增删改查插入数据查询数据更新…

NEDC、WLTC、CLTC,三种汽车能源消耗测试标准有什么区别?

NEDC、WLTC、CLTC,三种汽车能源消耗测试标准有什么区别? 参考链接:https://cj.sina.com.cn/articles/view/1677177940/63f7b454027018pu2 2023 年 1 月,抱着对先进新能源汽车的数码设备充电配置兴趣,小编抽空参观了第二十届广州国际车展,详细可以看这篇稿件《走马观花逛广…

【论文阅读】MARS:用于自动驾驶的实例感知、模块化和现实模拟器

【论文阅读】MARS&#xff1a;用于自动驾驶的实例感知、模块化和现实模拟器 Abstract1 Introduction2 Method2.1 Scene Representation2.3 Towards Realistic Rendering2.4 Optimization3.1 Photorealistic Rendering3.2 Instance-wise Editing3.3 The blessing of moduler des…

服务器中了勒索病毒怎么办?勒索病毒解密,数据恢复

勒索病毒是一种比较常见的电脑病毒&#xff0c;它们给企业的生产经营和发展带来了很大的影响。可是绝大多数企业在这方面并没有做合理的预案&#xff0c;这也导致当安全运维人员或者企业主发现中了勒索病毒以后手足无措。那云天数据恢复中心就用这篇文章来告诉大家当服务器中了…

4.docker容器编排(docker compose 与 docker swarm)

本文目录 1.容器编排2.Docker Compose1.Docker Compose 安装2.Docker Compose 示例1.使用 docker-compose 启动 nginx2.docker compose 常用命令3.校验 docker-compose.yml 是否有错误4.创建服务&#xff0c;启动容器5.弹性伸缩<扩缩容> 3.Docker Swarm1.Swarm 架构图2.S…