React基础入门

news2024/12/24 8:24:07

文章目录

    • 创建项目
    • 组件和事件
    • 更新状态
    • 导出组件
    • jsx

react是目前最流行的前端框架,几乎也不同太介绍了。

创建项目

首先下载node.js,安装成功后,最好换成国内的源

npm config set registry https://registry.npm.taobao.org

然后就可以使用脚手架创建一个项目了

npx create-react-app hello-world

然后进入新建的目录,就可以运行并体验这个项目了

>cd hello-world
>npm start

服务开启后,会自动在浏览器中弹出项目地址localhost:3000,就可以看到这个示例了。

打开项目文件,将App.js中的App函数改成下面这种最简单的形式

function App() {
  return (
    <p>微小冷</p>
  );
}

则网页内容变为

在这里插入图片描述

由此可知,App.js文件中,App函数的返回值,最终呈现在了网页中。但网页的标题以及图标显然不是我们自行设计的,说明React的逻辑是,把App的返回值嵌入到了某个网页之中。

在浏览器中按下F12,可以查看html代码,这个网页对应的html文件,实则是public文件夹下的index.html文件。将其删至最简

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>微小冷</title>
  </head>
  <body>
    <noscript>这里可以放js语句</noscript>
    <div id="root"></div>
  </body>
</html>

这样网页标题也变成了微小冷。

组件和事件

React提供了一系列UI组件,这些组件都以大写字母开头,有了这些,就可以创建一个用户友好的应用程序。接下来在页面中添加一个按钮,首先创建一个按钮函数

function OneButton(){
  function handleClick(){
    alert("你好!")
  }
  return (
    <button onClick={handleClick}>微小冷</button>
  )
}

其中嵌套的handleClick就是按钮点击事件,其返回值则是一个携带了点击事件的按钮。然后更改一下主函数


function App(){
  return (
    <OneButton/>
  );  
}

export default App;

效果如下

在这里插入图片描述

更新状态

当App返回一个按钮后,这个按钮的属性往往是已经确定了的,如果想更改按钮显示的内容,就需要引入useState。

import {useState} from 'react';

然后通过useState更新按钮组件

function OneButton(){
  const [count, setCount] = useState(0);
  function handleClick(){
    setCount(count + 1);
  }
  return (
    <button onClick={handleClick} 
      style={{width:100, height:40, fontSize:20}}> 
      点了{count}</button>
  )
}

效果如下

在这里插入图片描述

导出组件

上述代码将按钮写在了App.js中,当代码量较少的时候当然没有问题,但随着组件越来越多,这种写法会让整个项目变得混乱起来,为此,可将组件写到单独的文件里。

App.js的同级目录下新建Btn.js,内容如下

import { useState } from 'react';

export default function OneButton(){
    const [count, setCount] = useState(0);
    function handleClick(){
      setCount(count + 1);
    }
    return (
      <button onClick={handleClick} 
        style={{width:100, height:40, fontSize:20}}>
        点了{count}</button>
    )
}

函数OneButton和在App.js中相比,多了一个export default的修饰,表示该函数可以导出给其他组件调用。

然后修改App.js的内容,在挪走了OneButton之后,还要通过import的方式将其导入进来,如下所示。由于这个改动并未引起功能上的变化,效果与上面相同。

import Btn from './Btn.js';

function App(){
  return (
    <OneButton/>
  );  
}

export default App;

jsx

jsx相当于把html装入了js,使得前后封闭的html标签可以嵌入js代码中,很多js库都支持这种扩展语法,react亦然。例如上面的OnButton函数便是典型的jsx语法,在return后面的括号里,出现了html特有的封闭尖括号。

这段代码体现出jsx中花括号的两个用法

  • 单花括号,可调用js中的变量
  • 双花括号,可用于设置css样式

由于要嵌入一门编程语言,所以jsx的语法要比html更加严格,主要体现在

  1. 每个组件只能返回一个根元素
  2. 标签必须闭合
  3. 命名避免与js发生冲突

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

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

相关文章

NVM得介绍和详细使用教程

NVM​​​​​​​&#xff08;Node Version Manager&#xff09;是一个用于管理多个Node.js版本的工具。它允许您在同一台计算机上轻松地切换和管理不同的Node.js版本。以下是NVM的介绍和详细使用教程&#xff1a; 安装NVM&#xff1a; 首先&#xff0c;您需要在计算机上安装N…

Echarts仪表盘3.0

代码&#xff1a; <html> <head><title>图表绘制</title><style type"text/css">#dashboard {width: 402px;height: 293px;margin: 50px auto;}</style> </head> <body><!-- 为ECharts准备一个具备大小&#xf…

ssm 服务器运维管理的论坛系统-98166(免费领取源码)计算机毕业设计选题开题+程序定制+论文书写+答辩ppt书写 包售后 全流程

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;服务器运维管理的论坛系统当然也不能排除在外。服务器运维管理的论坛系统是以实际运用为开发背景&#xff0c;运用软件工…

c语言-数组长度的计算(结构体数组,字符串数组)

数组的长度我们可以直接根据函数声明得到数组的长度&#xff0c;或者可以通过计算的方法如下&#xff1a; 数组长度sizeof(数组名)/sizeof(数组类型) 测试代码如下&#xff1a;测试int整形数组&#xff0c;char字符数组&#xff0c;字符串数组&#xff0c;结构体数组。 #includ…

办公技巧:Word中插入图片、形状、文本框排版技巧

目录 一、插入图片排版技巧 二、添加形状排版技巧 三、插入“文本框”排版技巧 我们平常在制作word时候经常会遇到插入选项卡下的图片、形状和文本框这三种情况下&#xff0c;那么如何使得Word文档当中添加这三个元素的同时&#xff0c;又能保证样式美观呢&#xff0c;今天小…

Nginx环境搭建:安装与卸载

目录 一、卸载 二、安装 注&#xff1a;如果直接使用yum安装nginx&#xff0c;则默认安装路径为&#xff1a;/usr/share/nginx/ 下面这种方式我们是指定了安装目录 一、卸载 因为我之前的虚拟机上面已经有了nginx服务&#xff0c;所以这里可以先介绍一下nginx的卸载方法&a…

vulnhub4

靶机地址: https://download.vulnhub.com/admx/AdmX_new.7z 信息收集 fscan 扫一下 ┌──(kali㉿kali)-[~/Desktop/Tools/fscan] └─$ ./fscan_amd64 -h 192.168.120.138 ___ _ / _ \ ___ ___ _ __ __ _ ___| | __ / /_\/____/ __|/ …

joplin笔记同步 到腾讯云S3

创建存储桶 打开腾讯云的存储桶列表&#xff0c;点击“创建存储桶”&#xff0c;输入名称&#xff0c;选择地域&#xff08;建议选择离自己较近的地域以降低访问时延&#xff09;和访问权限&#xff08;建议选择“私有读写”&#xff09;。 s3 存储桶&#xff1a; 存储桶的名称…

AI 视频 | Stable Video Diffusion 来了!(附体验地址)

1. 介绍 11 月 21 日&#xff0c;Stability AI 推出了 Stable Video Diffusion&#xff0c;这是 Stability AI 的第一个基于图像模型 Stable Diffusion 的生成式视频基础模型。 目前 Stability AI 已经在 GitHub 上开源了 Stable Video Diffusion 的代码&#xff0c;在 Huggin…

geemap学习笔记013:为遥感动态GIF图添加图名

前言 遥感动态GIF图可以展示地理区域随时间的变化&#xff0c;这对于监测自然灾害、湿地变化、城市扩展、农田变化等方面非常有用&#xff0c;并且可以反复观察图像&#xff0c;以更深入地了解地表的动态变化。本节主要是对遥感动态GIF图添加图名&#xff0c;以便于更好地理解…

BUUCTF 刷新过的图片 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 浏览图片的时候刷新键有没有用呢 注意&#xff1a;得到的 flag 请包上 flag{} 提交 密文&#xff1a; 下载附件&#xff0c;解压得到一个.jpg图片。 解题思路&#xff1a; 1、根据题目提示&#xff0c;结合键盘上…

Go语言网络爬虫工程经验分享:pholcus库演示抓取头条新闻的实例

网络爬虫是一种自动从互联网上获取数据的程序&#xff0c;它可以用于各种目的&#xff0c;如数据分析、信息检索、竞争情报等。网络爬虫的实现方式有很多&#xff0c;不同的编程语言和框架都有各自的优势和特点。在本文中&#xff0c;我将介绍一种使用Go语言和pholcus库的网络爬…

qgis添加postgis数据

左侧浏览器-PostGIS-右键-新建连接 展开-双击即可呈现 可以点击编辑按钮对矢量数据编辑后是直接入库的&#xff0c;因此谨慎使用。

【JavaWeb】HTMLCSSJavaScript

HTML&CSS&JavaScript 文章目录 HTML&CSS&JavaScript一、开发工具及在线帮助文档二、 HTML2.1 HTML&CSS&JavaScript的作用2.2 HTML基础结构2.3 HTML概念词汇解释2.4 HTML的语法规则2.5 常用标签 三、CSS3.1 引入方式3.2 CSS选择器3.3 CSS浮动3.4 CSS定位…

数据结构与算法【B树】的Java实现+图解

目录 B树 特性 实现 节点准备 大体框架 实现分裂 实现新增 实现删除 完整代码 B树 也是一种自平衡的树形数据结构&#xff0c;主要用于管理磁盘上的数据管理&#xff08;减少磁盘IO次数&#xff09;。而之前说的AVL树与红黑树适合用于内存数据管理。存储一个100w的数…

CTF PWN-攻防世界level3之libc动态库寻址

文章目录 前言动态链接Plt与Got简单例子延迟绑定 level3题目简析EXP构造Getshell 总结 前言 本题目 level3 延续了 CTF PWN-攻防世界XCTF新手区WriteUp 一文中的 PWN 题目训练&#xff0c;是 level2 题目的衍生。与 level2 不同的是&#xff0c;存在栈溢出漏洞的 level3&#…

【DevOps】Git 图文详解(九):工作中的 Git 实践

本系列包含&#xff1a; Git 图文详解&#xff08;一&#xff09;&#xff1a;简介及基础概念Git 图文详解&#xff08;二&#xff09;&#xff1a;Git 安装及配置Git 图文详解&#xff08;三&#xff09;&#xff1a;常用的 Git GUIGit 图文详解&#xff08;四&#xff09;&a…

2023年亚太地区数学建模大赛 问题A

采果机器人的图像识别技术 中国是世界上最大的苹果生产国&#xff0c;年产量约为3500万吨。与此同时&#xff0c;中国也是世界上最大的苹果出口国&#xff0c;全球每两个苹果中就有一个&#xff0c;全球超过六分之一的苹果出口自中国。中国提出了一带一路倡议&#xff08;BRI&…

Linux - 文件系统 - 理解目录 - 理解 软/硬链接

前言 在上篇博客当中&#xff0c;我们对 文件系统 和 inode 做了初步了解&#xff0c;本博客将在上篇博客的基础之上&#xff0c;对于 文件系统当中的目录进行进步一阐述。 Linux - 进一步理解 文件系统 - inode - 机械硬盘-CSDN博客 目录 一个文件有一个 inode&#xff0c;…