当前位置: 首页 > news >正文

React(一)—— router/useRef/useState


文章目录

  • 项目地址
  • 一、构建项目
    • 1.1 使用vite构建项目
    • 1.2 所需插件
  • 二、Router
    • 2.1 安装router
    • 2.2 创建路由规则
    • 2.3 创建导航栏
      • 2.3.1 添加样式文件
      • 2.3.2 添加导航栏组件
      • 2.3.3 给每个页面添加Menu导航栏
    • 2.4 通过路由给页面传值
  • 三、Hooks
    • 3.1 useRef
      • 3.2 useRef操作DOM元素
      • 3.3 useRef进行数据缓存
    • 3.2 useState
      • 3.2.1 简单的待办事项
      • 3.2.2 表单提交
    • 3.2 useEffect


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、构建项目

1.1 使用vite构建项目

  1. 创建react程序
npm create vite 
  1. 进入到项目内部,安装npm
npm  install
  1. 启动项目dev环境
npm run dev

1.2 所需插件

在这里插入图片描述

二、Router

2.1 安装router

  • 安装node 18对应的Router
npm install react-router@6

安装成功后package.json会出现

  "dependencies": {"react": "^18.3.1","react-dom": "^18.3.1","react-router-dom": "^6.28.1"},

2.2 创建路由规则

  • App.jsx里创建路由规则,实现功能:
    1. 输入栏里输入地址,跳转到指定的Page里
    2. 当输入有误时,跳转到NotFoundPage里
import React from "react";
import { BrowserRouter, Route, Routes } from "react-router-dom";
import HomePage from "./pages/HomePage";
import AboutPage from "./pages/AboutPage";
import ContactPage from "./pages/ContactPage";
import NotFoundPage from "./pages/NotFoundPage";function App() {return (<div><BrowserRouter><Routes><Route path="/" element={<HomePage></HomePage>} /><Route path="/about" element={<AboutPage />} /><Route path="/contact" element={<ContactPage />} /><Route path="*" element={<NotFoundPage />} /></Routes></BrowserRouter></div>);
}export default App;

2.3 创建导航栏

  • 创建导航栏,实现功能有:
    1. 点击页面里的导航栏,实现不跳转到其他页面
    2. 给点击过的导航栏,添加一个绿色的样式

2.3.1 添加样式文件

  • src/assets/css/style.css添加导航栏点击后的样式
.active-item {color: green;
}.passive-item {color: red;
}

2.3.2 添加导航栏组件

  • 添加导航栏组件,src/component/Menu.jsx

在这里插入图片描述

2.3.3 给每个页面添加Menu导航栏

  • 给每个使用到Menu导航组件的页面里添加该组件

在这里插入图片描述

2.4 通过路由给页面传值

  1. 在路由里添加参数名称

在这里插入图片描述
2. About页面接收路由传递的参数,并且将参数使用在页面里

import React from "react";
import Menu from "../component/Menu";
import { useParams } from "react-router-dom";export default AboutPage() {let { id, name } = useParams();return (<div><Menu /><h1>AboutPage</h1><p>
http://www.lryc.cn/news/511487.html

相关文章:

  • ipad如何直连主机(Moonlight Sunshine)
  • 音视频入门知识(二)、图像篇
  • v-if 和 v-show 的区别
  • 解密MQTT协议:从QOS到消息传递的全方位解析
  • Java-02 深入浅出 MyBatis - MyBatis 快速入门(无 Spring) POM Mapper 核心文件 增删改查
  • Unity功能模块一对话系统(4)实现个性文本标签
  • git在idea中操作频繁出现让输入token或用户密码,可以使用凭证助手(使用git命令时输入的用户密码即可) use credential helper
  • 毫米波雷达技术:(九)快时间窗和慢时间窗的概念
  • 宠物行业的出路:在爱与陪伴中寻找增长新机遇
  • Android MQTT关于断开连接disconnect报错原因
  • Unity3D中Huatuo可行性的思维实验详解
  • ES-聚合分析
  • 【CSS in Depth 2 精译_093】16.2:CSS 变换在动效中的应用(上)—— 图标的放大和过渡效果的设置
  • Linux Debian安装ClamAV和命令行扫描病毒方法,以及用Linux Shell编写了一个批量扫描病毒的脚本
  • Spring创建异步线程,使用@Async注解时不指定value可以吗?
  • 二分和离散化
  • 深度学习实战102-基于深度学习的网络入侵检测系统,利用各种AI模型和pytorch框架实现网络入侵检测
  • vue3使用element-plus,解决 el-table 多选框,选中后翻页再回来选中失效问题
  • 网络的类型
  • 实现类似gpt 打字效果
  • 项目需求分析流程
  • idea连接SQL Server数据库_idea连接sqlserver数据库
  • Scala_【2】变量和数据类型
  • u3d中JSON数据处理
  • idea 安装插件(在线安装、离线安装)
  • springboot maven 构建 建议使用 --release 21 而不是 -source 21 -target 21,因为它会自动设置系统模块的位置
  • 离散数学 复习 详细(子群,元素的周期,循环群,合同)
  • Java后端常见问题 (一)jar:unknown was not found in alimaven
  • overleaf中文生僻字显示不正确,显示双线F
  • C语言中的贪心算法