react基础

简介: react基础

react基础

JSX基础

  • 概念:JSX是javascript XML(HTML)的缩写,表示在JS代码中书写HTML结构。
  • 作用:在React中创建HTML结构(页面UI结构)
  • React创建虚拟dom,渲染虚拟dom到页面上,不直接操作dom,减轻浏览器的负担。

创建虚拟dom的两种方式:

  • 通过jsx(bable可以将jsx转为js;jsx可以将js代码格式转化,本质是用js的方法来完成)jsx是js的一种语法糖。

  • 使用js(通过react的creatElement()等方法来创建,比较复杂)

创建ui方式

1、使用命令式语法创建UI

const h3 = React.createElement("h1", {
    className: "aaa" }, "我是标题");

const list2 = React.createElement(
  "ul",
  null,
  React.createElement("li", null, 111),
  React.createElement("li", null, 222),
  React.createElement("li", null, 333)
);

2、使用jsx语法声明式创建UI:

const h1 = <h1 className="aaa">我是标题</h1>;

const list = (
  <ul>
    <li>11</li>
    <li>22</li>
    <li>33</li>
  </ul>
);

对比之下,命令式创建较为繁琐,且嵌套关系较深的话写起来比较复杂。

注意:

jsx语法不能同时存在多个根节点,如果有必要可以用幽灵节点作为根节点(在真实页面上并不会去渲染幽灵节点)

错误写法

return (
  <div>{
   getUI(1)}<div>
  <div>222</div>
)

// 这是错误写法,JSX表达式必须具有一个父元素,就像vue2template下只能有一个父元素一样的意思

正确写法,可以使用幽灵节点 <></>

return {
   
  // <></> 是空标签(幽灵节点),在真实页面上不会渲染这个节点
  <>
    <div>{
   getUI(1)}<div>
    <div>222</div>
  </>
}

JSX的使用

步骤

1、使用JSX语法创建react元素

const title = <h1>HELLO JSX</h1>

2、使用 ReactDOM.render() 方法渲染元素到页面

ReactDOM.render(title,root)

完整代码

import React from 'react'
import ReactDOM from 'react-dom'

// 使用JSX创建react元素
const title = <h1>HELLO JSX</h1>

// 渲染react元素
ReactDOM.render(title,document.getElementById('root'))

JSX中使用JavaScript表达式

  • 语法: { JavaScript表达式 }
  • 注意:语法是单大括号
const name = '张三'
const say = () => 'Hello'
const title = (
  <h1 className="title">
    Hello,  {
   name}
    <p>{
   say()}</p>
    <p>{
    2>5 ? '大于' : '小于' }</p>
  </h1>
)

// 渲染react元素
ReactDOM.render(title, document.getElementById('root'))

JSX的条件渲染

1、使用 if else

let type = 1

const getUI = (type) => {
   
  if(type == 1) return <div>111</div>
  else if(type == 2) return <div>222</div>
  else return null
}

// 外层div是JSX语法的根节点,每个JSX有且只有一个根节点
return <div>{
    getUI(2) }</div>

2、使用逻辑与&&

return <div>
   {
    type == 1 && <div>111</div> }
   {
    type == 2 && <div>222</div> }
   {
    type == 3 && <div>333</div> }
</div>

3、三元表达式

const flag = true;
return flag ? (
   <div className="app">show</div>
) : (
   <div className="app">unShow</div>
)

// 或者
{
   
  flag ?
  <>
    dom...
  </>
  :
  <>
   dom...
  </>
}

JSX的样式

1、行内样式

注意是双大括号,第一层是JSX解析语法的大括号,第二层是装有设置style属性的对象

function App(){
   
  return (
    <div>
       <div style={
   {
   display:'inline-block'}}"></div>
    </div>
  )
}

// 或者,把style里的样式属性提出来

function App(){
   
  const styleObj = {
   
    color: "red",
    fontSize: '18px'
  }
  return (
    <div style={
   styleObj}></div>
  )
}

2、类名样式
在元素上添加 className

import React from "react";
import ReactDOM from "react-dom";
import './index.css'

const songs = [
    {
   id: 1, name: '痴心绝对'},
    {
   id: 2, name: '像我这样的人'},
    {
   id: 3, name: '南山南'},
]

const list = (
    <ul className="list">
        {
   songs.map(item => <li>{
   item.name}</li>)}
    </ul>
)

ReactDOM.render(list, document.getElementById('root'))

index.css

.list{
   
    color: chocolate;
    font-size: large;
}

可以使用三元表达式动态控制类名

const classFun = bd?'name1':'name2'

<div className={
   `${
   bd}`}>hello</div>

JSX的列表渲染

vue是使用v-for来进行列表渲染的,react则是使用 map 方法来进行列表渲染的

const list = [
  {
    id: "1", name: "icy" },
  {
    id: "2", name: "icy2号" },
  {
    id: "3", name: "icy3号" },
];

return (
  <div className="App">
     {
    list.map((item) => {
   
       return ( <div>{
   item.name}</div> )
     })}
  </div>
)

React的生命周期

React组件传递参数

React使用脚手架创建项目

借鉴如下

React教程(一):React基础

React教程(二)JSX介绍

React 基础学习

目录
相关文章
|
2月前
|
人工智能 自然语言处理 安全
用AI重构人机关系,OPPO智慧服务带来了更“懂你”的体验
OPPO在2025开发者大会上展现智慧服务新范式:通过大模型与意图识别技术,构建全场景入口矩阵,实现“服务找人”。打通负一屏、小布助手等系统级入口,让服务主动触达用户;为开发者提供统一意图标准、一站式平台与安全准则,降低适配成本,共建开放生态。
301 31
|
存储 自然语言处理 前端开发
领域驱动设计(DDD)-基础思想
一、序言     领域驱动设计是一种解决业务复杂性的设计思想,不是一种标准规则的解决方法。在领域驱动设计理念上,各路大侠的观点也是各有不同,能力有限、欢迎留言讨论。 二、领域驱动设计 DDD是什么 wiki释义:     领域驱动设计(英语:Domain-driven design,缩写 DDD)是一种通过将实现连接到持续进化的模型[1]来满足复杂
7901 0
|
5月前
免费图片在线压缩工具
在线图片压缩,快速减小图片大小,不损失太多画质
935 0
|
2月前
|
Ubuntu 编译器 计算机视觉
Ubuntu 20.04环境下无法找到#include<opencv/cv.h>文件 - 解决方案。
希望这些信息能帮助你解决遇到的问题。
198 10
|
2月前
|
机器学习/深度学习 缓存 PyTorch
131_推理加速:ONNX与TensorRT深度技术解析与LLM模型转换优化实践
在大语言模型(LLM)时代,高效的推理加速已成为部署高性能AI应用的关键挑战。随着模型规模的不断扩大(从BERT的数亿参数到GPT-4的数千亿参数),推理过程的计算成本和延迟问题日益突出。ONNX(开放神经网络交换格式)和TensorRT作为业界领先的推理优化框架,为LLM的高效部署提供了强大的技术支持。本文将深入探讨LLM推理加速的核心原理,详细讲解PyTorch模型转换为ONNX和TensorRT的完整流程,并结合2025年最新优化技术,提供可落地的代码实现与性能调优方案。
|
5月前
|
人工智能 运维 安全
高压电线电力巡检六类图像识别数据集(2000张图片已划分、已标注)【数据集分享】
随着电力巡检场景对智能识别系统的需求不断增长,构建高质量、真实场景覆盖的数据集变得尤为重要。我们发布的这套高压电力巡检六类图像数据集,旨在为研究者与开发者提供一个标准化、实用性强的实验平台。
高压电线电力巡检六类图像识别数据集(2000张图片已划分、已标注)【数据集分享】
|
5月前
|
存储 JavaScript 区块链
小试牛刀-walletconnect二维码及交互
最近在使用walletconnect协议和typescript语言实现相关交互功能,在此对从walletconnet协议二维码生成、连接后发送交易事务、签名事务、签名任意信息的处理进行记录,加深对walletconnect的理解,熟悉对其组件的使用,同时希望帮助到有实现相关功能的朋友。
204 0
|
5月前
|
人工智能 Android开发 iOS开发
安卓版快捷指令,加了AI语音可以一句话操作v0.2.7
Shortcuts for Android(SFA)是一款安卓自动化工具,支持语音创建快捷指令,实现听歌、导航、发消息等操作。操作简单,提升效率,快来体验语音控制的便捷!
761 0
安卓版快捷指令,加了AI语音可以一句话操作v0.2.7
|
5月前
|
机器学习/深度学习 人工智能 搜索推荐
快手封号是什么原因造成的?
快手账号封禁机制的技术逻辑与常见诱因
|
6月前
|
JSON API 数据安全/隐私保护
国内电商平台唯品会api数据接口实操
`vip_api_demo.py` 是一个用于调用唯品会开放平台 API 的 Python 示例代码。它通过 `VipAPI` 类封装了 API 调用逻辑,包括签名生成、参数构造和请求发送等功能。核心功能如下: 1. **签名生成**:按照唯品会 API 规则,对请求参数进行排序、拼接并使用 MD5 加密生成签名。 2. **商品列表接口**:提供 `get_product_list` 方法,支持按分类 ID 获取商品列表,并可指定分页参数。 3. **异常处理**:包含基本的错误捕获机制,确保程序稳定性。