第一个React程序

news2024/9/21 20:37:28

虽然跟着网上的视频,但是都是几年前的教学视频了,于是就在视频的引导下,自己使用vite脚手架建立一个React项目。

首先来到vite官网:

和当时建立vue项目一样,使用该命令创建,只是后面选择框架时选择react,

然后选择语言后,进行npm i 安装相关依赖包后,使用命令npm run deve即可,出现如下界面

网上教程可能随着react版本介绍的目录结构会不同,目前最新版react18 +vite项目的目录结构如下:

 

这里需要吐槽一下,看的视频让我把src下的文件全部删除,这里千万不能全部删除,除非是有经验的,第一次学习react项目就别乱删,要不是再次重新建了一个react项目,就被那些老教程舞蹈了。简单介绍一下区别

以前的入口文件是以index命名的js文件,但是现在不是了,而是根据index.html引入的文件为入口文件。

 一般来说这种都是最基础的,vite文档一般也不会写这些东西。

可以看到,入口文件是/src文件夹下的main.tsx.

tsx也没啥特别的,也是ts的一种,只是ts的一个扩展后缀,多了些功能,具体区别搜一下就能知道,目前来说,对于写demo来说,你写ts后缀和tsx后缀差别不大。

下面来看main.tsx文件

这里要看到,这里的方式和以前的react版本的方式有所不同,特别是render那一块

//以前的方式
ReactDOM.render(HTML代码,document.getElementById("root"))

 这种方式虽然来说目前还能用,但是在运行时会出现警告,会告诉你这样用法的render函数已被弃用(说是这样说,但是还是能执行)。

所以说,最好还是用vite给你提供的这种最新的方式来书写。

上面的StrictMode会js的都应该知道,这里对应的就是react的严格模式。

然后在入口文件,渲染的就是App组件的内容。以后书写组件化或者其他方式,请以这样的方式进行书写,就不怎么修改这个入口文件了。

来到APP.vue,去去去,应该是App.tsx

这里就是默认界面显示的代码了,这里如果刚入门就都删了就可以了,然后使用快捷方式创建模板代码就行了。(输入rafc)

自动生成一下模板代码:

 想要使用此快捷方式就需要安装插件:

就是框选的第一个就是,下面的也是比较常用的插件,一并安装即可,想知道是干啥的直接从网上也可以找到。

行了,这样就完成了基本的第一个react程序。还有就是react和vue不一样,你要写样式的话就建立一个css文件即可,和你的tsx文件或ts文件的文件名命名一样即可,还有就是你的组件的命名一定要首字母大写,以及写类名的时候要写成className而不是class,这是因为react考虑是和class类这个关键字冲突。还有就是和vue的区别就是vue是插值语法{{  }}双大括号这样,而react的{}这样的对象括号的形式.......暂时想不了太多了,会持续更新的。

最后,贴上自己按照教程写的一个demo

App.tsx

import "./App.css"
import { Home } from "./components/Home/home"
import { Login } from "./components/login/Login"
import { useState } from "react"

const clickHandler=(event:any)=>{
    alert('我是app中的外部函数')
    // event.preventDefault():阻止默认行为
    //event.stopPropagation():阻止事件冒泡
    // 在react当中,无法通过return false来取消默认行为
    // 需要使用事件对象
    // 事件对象
    // react当其中的事件对象不是原生的事件对象,是经过react包装过的对象
    // 由于对象经过包装,所以使用过程中我们无需再去考虑兼容性问题
}
function App(){
    const res=useState(1)
    // let counter=res[0]
    // let setCounter=res[1]
    let [counter,setCounter]=res

    const arr=[{
        name:'zhangsan',
        age:18
    },
    {
        name:'lisi',
        age:19
    },
    {
        name:'wangwu',
        age:20
    }

]
//将数据放入tsx中
const logData=arr.map((item,index)=><Login key={index} data={item.name} age={item.age}/>)
const addHandler=()=>{
    //点击后数字加一
    
    setCounter(prevCounter => prevCounter + 1);
    console.log(counter)
}
const subHandler=()=>{
    //点击后数字减一
    setCounter(prevCounter => prevCounter - 1);
    console.log(counter)
}


    return (
        <div className="tip">Hello World
        <div className="name" onClick={()=>{alert(123)}}>学习React</div>
        <div className="name" onClick={clickHandler}>学习React2</div>
        {logData}
        
        <Home counter={counter} add={addHandler} sub={subHandler}></Home>
        
        {/* 在父组件中可以直接在子组件中设置属性 */}
        {/* <Login test="123" fn={()=>{}} data={arr[0].name}/> */}
        {/* 同样存在事件的冒泡 */}
        </div>
        
    )

}


export default App;

 Home.tsx

import React from 'react'

export const Home = (props:any) => {
  return (
    <div>
      <div>{props.counter}</div>
      <button onClick={props.sub}>-</button>
      <button onClick={props.add}>+</button>
     
    </div>
  )
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2111524.html

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

相关文章

《机器学习》 基于SVD的矩阵分解 推导、案例实现

目录 一、SVD奇异值分解 1、什么是SVD 2、SVD的应用 1&#xff09;数据降维 2&#xff09;推荐算法 3&#xff09;自然语言处理 3、核心 1&#xff09;什么是酉矩阵 2&#xff09;什么是对角矩阵 4、分解过程 二、推导 1、如何求解这三个矩阵 1&#xff09;已知&#xf…

10款好用的电脑监控软件推荐丨2024年干货整理,赶紧码住!

选择合适的电脑监控软件可以帮助企业和个人更好地管理和保护其计算机资源。以下是10款较为好用的电脑监控软件推荐。 1. 安企神 7天试用体验https://work.weixin.qq.com/ca/cawcde06a33907e60a 简介&#xff1a;安企神是一款专为企业设计的信息安全管理软件&#xff0c;提供…

算法_队列+宽度优先搜索

文章目录 前言N叉树的层序遍历题目要求题目解析代码如下 二叉树最大宽度题目要求题目解析代码如下 在每个树中找最大值题目要求题目解析代码如下 二叉树的锯齿形层序遍历题目要求题目解析代码如下 前言 本文将会向你介绍有关队列宽度优先搜索的题目&#xff1a;N叉树的层序遍历…

目标检测-RT-DETR

RT-DETR (Real-Time Detection Transformer) 是一种结合了 Transformer 和实时目标检测的创新模型架构。它旨在解决现有目标检测模型在速度和精度之间的权衡问题&#xff0c;通过引入高效的 Transformer 模块和优化的检测头&#xff0c;提升了模型的实时性和准确性。RT-DETR 可…

Linux-实用指令

目录 前言 指定运行级别 基本介绍 切换运行级别 指令类 帮助指令 man 获得帮助信息 help指令 文件目录类 pwd指令 ls指令 cd指令 mkdir命令 rmdir指令删除空目录 touch指令 cp指令 rm指令 mv指令 cat指令 more指令 less指令 echo指令 head指令 tail指令…

2024.9.6 作业

手写unique_ptr指针指针 代码&#xff1a; #include <iostream> #include <stdexcept>template <typename T> class unique_ptr { public:// 构造函数explicit unique_ptr(T* ptr nullptr) : m_ptr(ptr) {}// 析构函数~unique_ptr() {delete m_ptr;}// 禁…

设置GB/T35114服务

GB/T35114服务是下联模式&#xff0c;支持GB/T35114标准A级双向认证&#xff0c;支持国密系列硬件设备。 操作步骤 在配置-》设备-》级联配置-》GB服务配置 进行编辑。 1、点击 编辑 2、修改国标服务器地址 3、如果其他参数也需要修改&#xff0c;都可自定义&#xff0c;除了国…

FME教程:通过更新读模块,解决FME读取shapefile数据,提示意外输入,“在转换中,某些读取的要素与工作空间的要素类不匹配……”的问题

目录 一、问题情况 二、解决方法 一、问题情况 在使用制作好的FME模板读取shapefile数据时&#xff0c;有时候会遇到弹窗提示意外输入&#xff0c;模板无法运行&#xff0c;在日志信息中警示“在转换中&#xff0c;某些读取的要素与工作空间的要素类不匹配。可能由于读模块的…

2024年全国大学生数学建模竞赛(E题) 建模解析|交通流量管控|小鹿学长带队指引全代码文章与思路

我是鹿鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 本篇文章是鹿鹿学长经过深度思考&#xff0c;独辟蹊径&#xff0c;实现综合建模。独创复杂系统视角&#xff0c;帮助你解决国赛的难关呀。 完整内容可以…

【前端学习】AntV G6-06 使用图算法

课程链接 图算法 Algorithm | G6 (antgroup.com) 【例子 pageRank】 ​​​​​​力导向图布局 | G6 (antgroup.com) 重点部分添加注释 import G6 from antv/g6;const { pageRank } G6.Algorithm; // 在此引入 pageRankconst container document.getElementById(containe…

无人机之报警器的作用

一、紧急救援与辅助搜救 紧急救援&#xff1a;在事故或紧急情况下&#xff0c;无人机报警器可以迅速发出警报&#xff0c;指引救援人员前往事故地点&#xff0c;提高救援效率。 辅助搜救&#xff1a;无人机搭载报警器可以辅助寻找失踪人员或其他需要搜救的场景&#xff0c;通…

MySQL数据库的介绍

目录 1.什么是MySQL数据库 2.MySQL数据库的设计 MySQL的进一步认识 MySQL的客户端 —— mysql MySQL的服务端 —— mysqld 3.MySQL数据库的架构 MySQL架构图 连接层 服务层 存储引擎层 文件系统层 4.MySQL的存储引擎 认识存储引擎 MySQL中的存储引擎 存储引擎之…

电工类 ,今日行业动态

电工类今日行业动态 一、技术发展趋势 智能化、自动化推进&#xff1a;随着人工智能、物联网等技术的不断发展&#xff0c;电工行业正逐步向智能化、自动化转型。智能电网、智能家居等领域的快速发展&#xff0c;对电工技术提出了新的要求&#xff0c;电工人员需要不断学习和…

使用matplotlib绘制散点图、柱状图和饼状图-学习篇

一、散点图 Python代码如下&#xff1a; num_points 100 x np.random.rand(num_points) #x点位随机 y np.random.rand(num_points) #y点位随机 colors np.random.rand(num_points) #颜色随机 sizes 1000 * np.random.rand(num_points) # 大小随机 alphas np.random.ran…

网络安全评测评技术与标准

网络安全测评概况 概念 参照一定的标准规范要求&#xff0c;通过一系列技术和管理方法&#xff0c;获取评估对象网络安全状况信息&#xff0c;对其给出相应网络安全情况综合判定 测评对象&#xff1a;信息系统的组成要素或信息系统自身 CC&#xff08;Common Criteria&#…

Versioned Staged Flow-Sensitive Pointer Analysis

VSFS 1.Introduction2.Approach2.1.相关概念2.2.VSFS 3.Evaluation参考文献 1.Introduction 上一篇blog我介绍了目前flow-sensitive pointer analysis常用的SFS算法。相比IFDS-based方法&#xff0c;SFS显著通过稀疏分析提升了效率&#xff0c;但是其内部依旧有许多冗余计算&a…

12道经典性能测试人员面试题

1.性能测试包含了哪些软件测试&#xff08;至少举出3种&#xff09;&#xff1f; 参考答案&#xff1a;负载测试、压力测试、容量测试。 负载测试&#xff08;Load Testing&#xff09;&#xff1a;负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标&#xff0c…

Linux系统编程实现ls -l | wc -l指令

由于该指令是通过管道的形式实现的&#xff0c;所以我们要使用系统函数pipe。ls -l |wc -l的作用就是统计当前目录有多少文件。如果又父进程实现ls -l&#xff0c;子进程实现wc -l指令&#xff0c;代码如下&#xff1a; #include<unistd.h> #include<stdio.h> #in…

帝可得智能售货机运营管理系统

1.项目介绍 帝可得是一个基于物联网概念下的智能售货机运营管理系统 应用场景&#xff1a;智能家居、共享充电中、智能售货机 智能售货机的优势在于其自我管理能力 。 物联网技术&#xff1a;像是售货机的顺风耳和千里眼。 智能分析与推荐 人员设备绑定管理 移动支付支持…

下一代皮克斯:AI如何融合电影与游戏

故事是人类体验的核心,通过故事我们理解世界、寻找意义并与他人建立联系。技术的进步不断推动着故事叙述的形式,从迪士尼的多平面摄影机到皮克斯的3D图形技术,每一次技术革命都带来了故事叙述的新方式。 游戏:现代叙事的前沿 今天,有两个主要的趋势正在加速下一代叙事公…