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月前
|
前端开发 JavaScript API
React开发需要了解的10个库
本文首发于微信公众号“前端徐徐”,介绍了React及其常用库。React是由Meta开发的JavaScript库,用于构建动态用户界面,广泛应用于Facebook、Instagram等知名网站。文章详细讲解了Axios、Formik、React Helmet、React-Redux、React Router DOM、Dotenv、ESLint、Storybook、Framer Motion和React Bootstrap等库的使用方法和应用场景,帮助开发者提升开发效率和代码质量。
136 4
React开发需要了解的10个库
|
1月前
|
移动开发 前端开发 JavaScript
React框架
React是一个用于构建用户界面的JavaScript库,由Facebook开发并于2013年开源,目前在前端开发领域得到了广泛的应用。
|
4月前
|
前端开发 JavaScript 算法
React框架有哪些特点?
【8月更文挑战第28天】React框架有哪些特点?
244 65
|
6月前
|
前端开发 JavaScript vr&ar
|
7月前
|
前端开发 JavaScript 算法
React 基础使用
React 基础使用
|
前端开发 JavaScript 算法
react理解,什么是react,react有那些特性
react理解,什么是react,react有那些特性
73 0
|
前端开发 JavaScript
【React 入门系列 03】React 组件
组件是React的一等公民,使用React组件,组件表示页面中的部分功能,多个组件的组合实现了整个完整的页面功能。 组件可复用,独立,可组合。 React中的组件类型被分为了两类:函数组件,又被称为无状态组件;类组件,又被称为有状态组件。状态(state)即数据。 函数组件没有自己的状态,自负责数据展示。类组件有自己的状态,负责更新UI。React中想要实现该功能,就要使用类组件(有状态组件)。 有状态组件通过 state()和setState()两个方法可以实现对状态(数据)的获取和修改。
|
7月前
|
前端开发
【React学习】—类式组件(六)
【React学习】—类式组件(六)
【React学习】—类式组件(六)
|
前端开发 JavaScript 算法
【React学习】—React简介(一)
【React学习】—React简介(一)
|
移动开发 前端开发 JavaScript
React | 认识React开发
React | 认识React开发