一、React基础知识

一、环境安装

        第一种:使用原生搭建(可以从国内下载配置镜像、也可以从国外下载)

                        指令:1.国内下载:(1:npm config set registry https://r.npm.taobao.org//

                                                        (2:npm install -g create-react-app:全局安装react脚手架

                                                        (3:create-react-app 项目名:创建项目 

                                                        (4:cd  项目名:进入项目

                                                        (5:npm run start:启动项目

                                2.国外下载:执行(2-(5步骤即可,下载速度较慢

        第二种方式:用vite搭建脚手架(速度较快,建议使用)

                指令:(1.npm init vite@latest:初始化一个新项目

                        (2:编辑项目名,选择react,选择javascript、tscript等等,按需求选择

                        (3:cd 项目名:进入该项目

                        (4:npm init:初始化一个新的 Node.js 项目

                          (5:npm run dev:启动项目

二、JSX相关语法

src文件夹下的main.jsx文件:是整个项目的入口文件,不可移除,其他的按自己需求保留

JSX:完整写法:JavaScript XML(标记语言):通俗的讲是js语言里面可以插入标签

        XML和HTML的区别:前者不能直接引入外部文件,后者可以引入外部文件(js、ts、css等)

1.组件,创建组件可以分为三种:纯组件、函数组件、类组件

        1.1:纯组件:通过创建jsx对象,包含了多个元素的div标签(三个div标签)。可以将jsx对象当作变量使用在标签的括号中

import React from 'react'
import ReactDOM from 'react-dom/client'let com = <div><h1>这是纯组件部分呀</h1><div>纯组件</div><div>函数组件</div><div>类组件</div>
</div>
//render里面写入com这个jsx对象,即可将其里面的元素展现到页面中去
ReactDOM.createRoot(document.getElementById('root')).render(com)

        1.2:函数组件:通过声明一个函数来创建组件

import React from 'react'
import ReactDOM from 'react-dom/client'
// 声明一个函数
function Hanshu(ARG) {return <div><h1>这是通过函数来创建的组件呀</h1><div>在main.jsx文件里面操作的嘞</div></div>
}
// 11行和12行以及render中的Hanshu()等价
let res = <Hanshu></Hanshu>
let res2 = Hanshu()ReactDOM.createRoot(document.getElementById('root')).render(Hanshu())

        1.3:通过类来创建组件:

import React from 'react'
import ReactDOM from 'react-dom/client'
//创建一个Type类并继承React的组件部分,是为了继承它的响应式数据功能
class Type extends React.Component {render() {return <div><h1>这是通过class类来创建的组件呀</h1><div>嘿嘿黑</div></div>}
}
// 只能通过这个来实现咯
let res = <Type></Type>
ReactDOM.createRoot(document.getElementById('root')).render(res)

2.jsx插值表达式的使用途径

        (1:变量:直接当作变量通过{}来使用

import { useState } from 'react'
import './test.css'
function test() {// 当作变量来使用let bianliang = 120let arr = ["box1", "box2", "jack", "22岁了", "今天是他生日哦"]let obj = { name: "小红", age: "22", sex: "女", job: "student" }return (<div className=''><div>变量使用::{bianliang}</div><div>访问数组中的成员::{arr[4]}</div><div>访问对象中的成员::{obj.name}</div></div>)
}
export default test

        (2:对象数组成员访问

import { useState } from 'react'
import './test.css'
function test() {let arr = ["box1", "box2", "jack", "22岁了", "今天是他生日哦"]let obj = { name: "小红", age: "22", sex: "女", job: "student" }return (<div className=''><div>访问数组中的成员::{arr[4]}</div><div>访问对象中的成员::{obj.name}</div></div>)
}
export default test

        (3:js运算表达式

import { useState } from 'react'
import './test.css'
function test() {let isout = "yes"let count = 22// 定义一个变量marrylet ismarry = truereturn (<div className=''>{/*相当于vue中的v-fi: 如果isout的结果为yes,则显示”不出去了吧“,否则显示”出去呀,散步不“ */}<div>{(isout === "yes") ? "不出去了吧" : "出去呀,散步不"}</div>{/* 可以将前面的变量进行加减乘除计算 */}<div>count+21的结果为{count + 21}</div>{/* 判断marry是否为true满足则显示后面的”已经结婚了哦“信息 ,判断为false则不显示*/}<div>{ismarry && "逻辑与的部分"}</div>{/* 若marry判断为false,则显示后面的语句,若为true则显示前面的语句 */}<div>{ismarry || "逻辑或的部分"}</div></div>)
}
export default test

        (4:函数调用

import { useState } from 'react'
import './test.css'
function test() {function diaoyong() {console.log("调用了函数名为diaoyong");}return (// 直接在标签中将diaoyong函数当作变量使用<div className='fa'>111{diaoyong()}</div>)
}
export default test

        (5:jsx对象(给变量赋标签组件)

import { useState } from 'react'
import './test.css'
function test() {// 定义一个jsx对象,包含了多个元素的div标签()h1,h2,h3,p标签// 可以将jsx对象当作变量使用在标签的括号中let jsxobj = <div><h1>hello</h1><h2>你好</h2><h3>晚上老好了</h3><p>嘿嘿黑</p></div>return (// 将jsxobj这个对象显示到页面中去<div className='fa'>{jsxobj}</div>)
}
export default test

        (6:插值{}可以使用途径

                (6.1:数据循环渲染

import { useState } from 'react'
function test() {// 想要将arr数组里面的元素遍历装到a标签中去// 第一种写法,使用for循环将其取到的元素当作变量放到dive标签中去,再将遍历的得到的div标签添加到新的数组中去let arr = ["你好", "react", "很高兴认识您", "我相信接下来的时间", "我们会相处的很愉快的"]let newarr = []for (let i = 0; i < arr.length; i++) {newarr.push(<div key={i}>{arr[i]}</div>)}return (<div>{newarr}{/* 第二种(最常用):直接在标签中使用map函数 ,将各个元素取出来放到div标签中当作变量使用*/}<div >{arr.map((el, index) => <div key={index}>{el}</div>)}</div></div>)
}
export default test

小案例:数组中的元素是对象,将每个元素都显示在页面上

import { useState } from 'react'
import './test.css'
function test() {// 将数组arr里面的数据取出来展现到页面上let arr = [{ title: "电脑", discrbe: "真的不错", price: "1231元", location: "四川", comment: "发货快,是正品,下次还来" },{ title: "手机", discrbe: "正品直发", price: "2313元", location: "广东" },{ title: "电话手表", discrbe: "可以聊天的神奇软件", price: "1231元", location: "广东" }]return (// 用map函数将arr里面的元素取出来,然后通过点语法来取元素中的对象<div className='fa'>{arr.map((el, index) => <div className='big' key={index}><h4>{el.title}</h4><div>{el.discrbe}</div><div>{el.price}</div><div>{el.comment}</div></div>)}</div>)
}
export default test

                (6.2:标签事件(以点击事件为例)

import { useState } from 'react'
function test() {// 定义一个函数dianj(没传参数)function dianji() {console.log("触发了点击事件");}function canshu() {console.log("触发了传递参数的函数");}return (<div>{/* 点击事件操作的函数不能加括号,加了括号是不用点击就立即执行 */}<div className="box" onClick={dianji}>点击打印</div><button onClick={canshu}>传参数事件</button></div>)
}
export default test
                (6.3:标签的属性(className,style,src,href.....)

                 (6.3.1:className:     

                      若只想一个类名需要在前面声明一个对象obj={one1:”one“,one2:"two",one3:"three"}

                                格式:className={obj.one1}

                        若想要给一个标签多个类名可以声明一个数组变量arr=【box1,box2,box3】

                                       className={arr.join(' ')}

                                也可以直接claName={【box1,box2,box3,box4】.join(' ')}

                (6.3.2:style:分为全局样式和局部样式

                        全局样式可以直接在main.jsx中引入作为全局样式

/*.index.css文件中为 全局样式 */
.name {width: 100px;height: 100px;border: 1px solid black;
}//app.jsx文件中import { useState } from 'react'
// 引入组件Box
import Box from './jubu.jsx'
function App() {return (<div><div className='name'>全局样式</div><Box></Box></div>)
}export default App

                        局部样式:当项目中有几个组件,组件中的类名重复时,则显示的是后面执行的那个样式,若想要显示各自的样式,需要将各自的样式设置为局部样式(样式文件后缀名修改为module.css)

//jubu.jsx文件中import { useState } from 'react'
// 引入局部样式
import yangshi from './jubu.module.css'
function jubu() {return (<div className={yangshi.name}>局部样式的效果</div>)
}
export default jubu//jubu.module.css文件中
/* 局部样式 */
.name {width: 100px;height: 50px;background-color: yellow;border-radius: 10px;
}

                (6.3.3:src和href:绑定的是一个地址或网址

import { useState } from 'react'
function test() {// 点击跳转到百度首页let tiaozhuan = "https://www.baidu.com"// 图片显示的网络地址,也可以是本地地址let tupian = "https://tse1-mm.cn.bing.net/th/id/OIP-C.De4iKAMeTvWwPQxXNK74ZgHaE8?w=281&h=187&c=7&r=0&o=5&pid=1.7"return (<div><a href={tiaozhuan}>点击跳转到百度首页</a><img src={tupian} alt="" /></div>)
}export default test

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

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

相关文章

【调研】低代码平台合集

一、illa ILLA是一个帮助开发者快速建立企业内部应用的低代码平台&#xff0c;为开发者节约数据调用与页面设计的时间 官网&#xff1a;https://www.illacloud.com/zh-CN 私有化部署文档&#xff1a;https://www.illacloud.com/zh-CN/docs/illa-cli 优点&#xff1a; 1.本地部…

[算法前沿]--054-大语言模型的学习材料

大语言模型的学习材料 Other Papers If you’re interested in the field of LLM, you may find the above list of milestone papers helpful to explore its history and state-of-the-art. However, each direction of LLM offers a unique set of insights and contribut…

拥抱AI-ChatGPT:人类新纪元

最近大模型通用智能应用持续发酵&#xff0c;各大科技公司都陆续推出了基于通用大模型的智能应用产品&#xff0c;典型的如OpenAI的ChatGPT、微软的BingChat、百度的文心一言、360的智脑、阿里的通义千问等。当然最火的要属于ChatGPT了&#xff0c;从去年年底推出到现在已经有很…

数据分析实战 - 2 订单销售数据分析(pandas 进阶)

题目来源&#xff1a;和鲸社区的题目推荐&#xff1a; 刷题源链接&#xff08;用于直接fork运行 https://www.heywhale.com/mw/project/6527b5560259478972ea87ed 刷题准备 请依次运行这部分的代码&#xff08;下方4个代码块&#xff09;&#xff0c;完成刷题前的数据准备 …

【JMeter】插件管理工具

1. 官方下载地址 Documentation :: JMeter-Plugins.org 2.安装 将该插件的jar包移动到lib/ext下 3.重启JMeter就可以看到插件管理器 4. 安装&#xff0c;更新&#xff0c;删除插件 安装插件 删除插件 更新插件

python:将多个9波段影像tif文件转成numpy格式保存

作者:CSDN @ _养乐多_ 最近有粉丝问,如何将多个9波段的Aster影像tif文件转成numpy格式保存,然后输入网络进去训练。本文提供了两种思路和代码。 结果如下图所示, 文章目录 一、简单方法(分两步)二、端到端方法(一步到位)一、简单方法(分两步) 先将所有的多波段影像…

抖音协议算法最新版

抖音的协议算法是指用于推荐内容和个性化用户体验的算法系统。这些算法根据用户的兴趣、行为和偏好来推荐适合他们的视频内容&#xff0c;以提供更好的用户体验。 抖音的协议算法使用了大量的数据和机器学习技术来实现个性化推荐。以下是一些可能应用于抖音协议算法的技术和方法…

Linux:Docker-yum安装(2)

yum在线安装 我这里使用的是centos7默认仓库 如果没有了&#xff0c;可以去下面这个链接下载回来 KALItarro/default-yum: centos7-默认yum仓库 (github.com)https://github.com/KALItarro/default-yum wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.…

数仓删数方案

数仓删数 一、源头逻辑删除二、源头物理删除方案一:物理删除方案二:逻辑删除一、源头逻辑删除 源头有逻辑删除标志的话,数仓直接同步过来,推数的时候可限制isvalid = 1 二、源头物理删除 数仓中的数据需要与源头进行全量核对 方案一:物理删除 a、新建一张临时表 --primar…

ios原生分享

什么是 ios 系统的原生分享呢&#xff0c;如下图所示 具体使用系统UIActivityViewController&#xff0c;完整代码如下&#xff1a; -(void)shareAny:(NSString *)text url:(NSString *)_url imagePath:(NSString *)_imagePath {NSLog("shareAny, text:%, url:%, imagePa…

如何使用 NFTScan NFT API 在 BNB Chain 网络上开发 Web3 应用

BNB Chain 是一条以太坊虚拟机兼容的区块链&#xff0c;是加密资产行业顶尖项目的测试和前沿探索。通过引入权益权威证明&#xff08;PoSA&#xff09;共识机制&#xff0c;BNB Chain 创建了验证一个允许节点、代币持有者、开发者和用户都能够从区块链中获益的生态系统&#xf…

获取当前时间并格式化为str类型

import time aatime.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) print(type(aa),aa)

041-第三代软件开发-QCustcomPlot波形标注

第三代软件开发-QCustcomPlot波形标注 文章目录 第三代软件开发-QCustcomPlot波形标注项目介绍QCustcomPlot波形标注效果初始化绘制 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML…

Lua基础

table 基本原理&#xff1a; table是一种特殊的容器&#xff0c;可以向数组一样按照索引存取&#xff0c;也能按照键值对存取。 local mytable {1,2,3} --相当于数组 local mytable {[1]1,[2]2,[3]3} --和上面等价 local mytable {1,2,3,[3] 4} --隐式赋值会覆盖掉显式赋…

内衣迷你洗衣机什么牌子好?选购内衣裤洗衣机的方法

在如今的这个年代&#xff0c;大多数的用户由于种种原因&#xff0c;连洗自身的内衣裤以及袜子都不想洗。然而内衣裤洗衣机作为近来比较火的小家电&#xff0c;网友的评价褒贬不一&#xff0c;有人说“买来就是鸡肋&#xff0c;用起来不方便”&#xff0c;“也有人买了后直呼真…

力扣740. 删除并获得点数(动态规划)

题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;你可以对它进行一些操作。 每次操作中&#xff0c;选择任意一个 nums[i] &#xff0c;删除它并获得 nums[i] 的点数。之后&#xff0c;你必须删除 所有 等于 nums[i] - 1 和 nums[i] 1 的元素。 开始你拥有 0 个点…

基于BP神经网络的风险等级预测,BP神经网络的详细原理,

目录 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 代码链接:基于BP神经网络的风险等级评价,基于BP神经网络的风险等级预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.n…

对一个金融风控测额公式的理解(1)

目录 公式&#xff1a;&#xff08;近3个月回款总额/过去3个月的FBA平均库存价值&#xff09;*最近FBA的库存价值*过去13周FBA发货比例 详细讨论一下这个&#xff1a;&#xff08;近3个月回款总额/过去3个月的FBA平均库存价值&#xff09; 既然&#xff08;近3个月回款总额/…

第十八届黑龙江省赛(K dp)

链接&#xff1a;The 18th Heilongjiang Provincial Collegiate Programming Contest Problem K. Turn-based Game 题意 主角有 A A A 血量&#xff0c;每只怪物有 B B B 血量&#xff0c;每个单位每次进攻伤害为 1 1 1&#xff0c;每个单位血量低于等于 0 0 0 判定为死…

MacOS使用PF实现iptables的端口转发功能

目录 准备web服务通过pf实现端口转发其他命令参考文章 准备web服务 使用Flask启动一个简单的web服务 from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return Hello World!if __name__ __main__:app.run(port5000)浏览器访问&#xff1a;http:/…