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

news2024/11/26 23:20:39

创建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.coloradmin.cn/o/1008998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享一下在微信公众号上怎么实现表单功能

在微信公众号上实现表单功能可以帮助公众号运营者与用户进行互动&#xff0c;收集用户反馈&#xff0c;提供个性化服务&#xff0c;以及进行数据分析等。以下是在微信公众号上实现表单功能的一些步骤和建议。 一、了解微信公众号平台的功能 首先&#xff0c;你需要了解微信公众…

关于《考研数学高分公式》系列的后续及一点说明

写在前面 在昨天&#xff0c;当我再次登录CSDN时&#xff0c;我惊讶地发现《考研数学高分公式》这一系列的两篇文章竟然拥有超过数万次的阅读量。许多学弟学妹也通过私信向我询问&#xff0c;为什么不再继续更新这个系列了。 未及时回复他们&#xff0c;颇感惭愧。 我仔细考…

预约到家按摩小程序开发定制同城服务

随着生活节奏加快&#xff0c;生活压力也随之而来&#xff0c;很多人忙于工作与生计&#xff0c;身体和心理两方面都在承受重压。而按摩能够消除身体的疲惫&#xff0c;增强人的身体体质&#xff0c;在劳累过后放松身心按摩一会儿&#xff0c;可以快速恢复精神状态&#xff0c;…

智能3D人体导医系统源码 智能导诊系统源码

智能3D人体导医系统源码 医院智能导诊系统是在医疗中使用的引导患者自助就诊挂号&#xff0c;在就诊的过程中有许多患者不知道需要挂什么号&#xff0c;要看什么病&#xff0c;通过智能导诊系统&#xff0c;可输入自身疾病的症状表现&#xff0c;或选择身体部位&#xff0c;在…

云的灵魂是人工智能

在这个数字化飞速发展的时代&#xff0c;云计算已经成为了我们生活中不可或缺的一部分。而随着人工智能技术的不断进步&#xff0c;云的灵魂也逐渐被赋予了人工智能的色彩。让我们一起探讨这个新兴的话题&#xff0c;一起展望云计算与人工智能的融合所带来的巨大变革。 一、GPU…

中风失语 18 年,AI + 脑机接口帮她「意念发声」

人与人交往中&#xff0c;说话表达是最基本的能力和方式&#xff0c;可世界上有很多人&#xff0c;却「有口难言」。 「失语症」中&#xff0c;由中风引起的最为常见。他们的声音无法传达&#xff0c;他们的诉求不为人所知&#xff0c;他们遭受着社交孤立&#xff0c;他们的沉默…

“混合”引擎为通用子模块提供动力,实现嵌入式I / O灵活性

现成的组件对于嵌入式开发工程师而言并不是什么新鲜事物。但是&#xff0c;实际上没有人期望一种“一刀切”的解决方案&#xff0c;尤其是在涉及复杂的I / O要求的情况下。 但是&#xff0c;基于流行的夹层卡格式的具有成本效益的现场可编程门阵列&#xff08;FPGA&#xff09…

DALLE-2

扩散模型做图像生成使用clip预训练好的特征去做层级式的依托于文本的图像生成先生成小分辨率图像64*64然后利用一个模型上采样到256*256&#xff08;迭代&#xff09;先训练好一个clip模型&#xff0c;学习到图像文本对的关系 图像生成的模型 AEDAEVAEVQVAEDALL-E &#xff1…

Pycharm 配置python项目本地运行环境

1.打开Pycharm,打开Setting 2. 新建本地环境 3.如果报错如上图所示&#xff0c;请通过cmd来新建本地环境&#xff0c;具体步骤如下 在对应的代码路径下&#xff0c;通过virtualenv venv来创建虚拟路径 安装好之后&#xff0c;安装对应的依赖包即可 pip3 install -r ./require…

如何在windows环境下编译T

一&#xff0c; 安装MYSYS2 1. 去https://www.msys2.org下载 msys2-x86_64-xxxxx.exe; 2. 按照msys2.org主页提示的步骤安装; 3.安装完默认起来的是 UCRT的&#xff0c; 可以根据环境的需要选择&#xff0c; 我选择的 MSYS2 MINGW64 4. 搭建编译环境&#xff0c; 安装对应的软…

反常积分的概念与计算

目录 无穷区间上的反常积分 无界函数的反常积分 反常积分的敛散性 反常积分的计算 无穷区间上的反常积分 无穷区间上的反常积分(improper integral on infinite interval)是一种反常积分 设函数f(x)在(a,∞)上有定义&#xff0c;且f(x)在任意有限区间(a,A)(A>a)上可积&…

一生一芯15——jupyter notebook搭建与对应kernel的设置

本文参照 https://zhuanlan.zhihu.com/p/403183676?utm_id0 https://blog.csdn.net/moledyzhang/article/details/78850820 进入虚拟环境Chisel conda activate Chisel安装jupyter pip3 install jupyter查看内核 jupyter kernelspec list此处我已经安装好&#xff0c;否则…

大学生实习考勤打卡系统 微信小程序uniapp

本毕业设计的内容是设计实现一个学生实习考勤的打卡小程序。它是以 springboot框架&#xff0c;MYSQL为数据库开发平台&#xff0c;Tomcat网络信息服务作为应用服务器。学生实习考勤的打卡的功能已基本实现&#xff0c;主要包括学生、实习单位、实习打卡、考研申报、找工作申报…

AQS锁原理

文章目录 一、AQS是什么&#xff1f;二、AQS原理三、STATE&#xff1a;状态四、AQS共享资源的方式&#xff1a;独占式和共享式4.1 独占式实现4.1 共享式 总结 一、AQS是什么&#xff1f; AQS&#xff08;Abstract Queued Synchronizer&#xff09;是一个抽象的队列同步器&…

节距信号发生器(成缆变节距控制)

成缆机系统控制,请查看下面文章链接 ,这篇文章主要介绍节距信号发生器算法原理和代码,博途PLC信号发生器链接地址如下: PLC信号发生器(博途SCL)_RXXW_Dor的博客-CSDN博客信号发生器的应用请参看下面的博客文章,在演示滤波器的作用时,我们可能也会用到信号的叠加等。博途…

嵌入式学习笔记(29)轮询方式处理按键

X210开发板的按键接法 &#xff08;1&#xff09;查原理图&#xff0c;找到按键对应的GPIO&#xff1a;SW5:GPH0_2 SW6:GPH0_3 SW78910:GPH2_0123 &#xff08;2&#xff09;原理图上可看出&#xff1a;按下时是低电平&#xff0c;弹起时是高电平。 按键对应的GPIO模式设置 …

gcc/c++ 版本不一致问题导致的

1.问题 rk3566板子的系统是ubuntu20.04 focal&#xff0c; /etc/apt/source.list更换为阿里源 x86-67的pc主机系统的是ubuntu20.04 jammy /etc/apt/source.list 更换为清华源 按照rknpu2的开发教程Rockchip_Quick_Start_RKNN_SDK_V1.5.2_CN.pdf&#xff1a; 交叉编…

C语言--strcat函数

C语言–strcat函数 文章目录 C语言--strcat函数一、strcat函数是什么&#xff1f;二、使用示例二、模拟实现 一、strcat函数是什么&#xff1f; 作用是把源数据追加到目标空间 char * strcat ( char * destination, const char * source );源字符串必须以 ‘\0’ 结束。目标空…

SqlServer在尝试加载程序集 ID 65917 时 Microsoft .NET Framework 出错。服务器可能资源不足,或者不信任该程序集

问题&#xff1a;在尝试加载程序集 ID 65917 时 Microsoft .NET Framework 出错。服务器可能资源不足&#xff0c;或者不信任该程序集&#xff0c;因为它的 PERMISSION_SET 设置为 EXTERNAL_ACCESS 或 UNSAFE。 检查数据库属性&#xff1a;检查服务器是否信任该程序集 解决方法…

PMP考试是什么?适合哪些人学?

PMP&#xff0c;Project Management Professional的缩写&#xff0c;中文名为“项目管理专业人士资格认证”&#xff0c;是由美国项目管理协会&#xff08;PMI&#xff09;发起的&#xff0c;严格评估项目管理人员知识技能是否具有高品质的资格认证考试。 PMP是管理专门用于项…