React 速通笔记

简介: 【7月更文挑战第17天】

前言
最近刚学完 React,想着把笔记分享给大家,本笔记特别适合从事后端想要学习前端的人。我看视频是黑马最新的 React 视频(黑马程序员前端React18入门到实战视频教程,从react+hooks核心基础到企业级项目开发实战(B站评论、极客园项目等)及大厂面试全通关_哔哩哔哩_bilibili),个人觉得讲得还不错的。想要完整版可以私信我,如果对你有帮助的话就点个赞关注下吧。后面持续分享 Java 相关技术和笔记。

一、React 基础

  1. 创建一个 react 项目
    1.利用 create-react-app 工具创建一个 react 项目

npx create-react-app project-name
npm start # 启动项目
2.src 目录只保留 App.js 和 index.js 文件

3.精简 App.js 和 index.js 文件

1.1 src 目录下文件的作用
index.js 是项目的入口,从这里开始运行,App 是根组件被 Index.js 导入,最后渲染到 index.html 中 root 节点上

index.js:

// 项目的核心入口 从这里开始运行

// React 必要的两个核心包
import React from 'react';
import ReactDOM from 'react-dom/client';

// 导入项目的根组件
import App from './App';

// 把 App 根组件渲染到 id 为 root 的 dom 节点上
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(

);
App:

// 项目的根组件

// App -> index.js -> public/index.html(root) => App 根组件被导入到 index.js,然后渲染到 index.html 的 root 节点上
function App() {
return (


this is React App

);
}

export default App;

  1. jsx 基础-概念和本质
    2.1 JSX 是什么?
    JSX 表示在 JS 代码中编写 HTML 模板结构,是 React 中编写 UI 模板的方式

优势:

HTML 的声明式模板写法

JS 的可编程能力

JSX 是 JS 的拓展,浏览器不可直接识别,需要解析工具解析才可识别

2.2 JSX 编写 JS 代码
在 jsx 中可通过大括号 {} 识别 js 表达式,比如常见的变量、函数调用、方法调用等等

App.js:

// 项目的根组件
// App -> index.js -> public/index.html(root) => App 根组件被导入到 index.js,然后渲染到 index.html 的 root 节点上

function getName() {
return 'jack';
}

const count = 100;
function App() {
return (


this is React App
{/ 1. 引号传递字符串/}
{'this is message'}
{/ 2. 识别 js 变量/}
{count}
{/ 3. 函数调用/}
{ getName() }
{/ 4. 方法调用/}
{new Date().getDate()}
{/ 5. 使用 js 对象/}
this is div


);
}

export default App;
2.3 JSX 中实现列表渲染
提示:在 JSX 中可以使用原生 JS 中 map 方法遍历渲染列表

// 项目的根组件
// App -> index.js -> public/index.html(root) => App 根组件被导入到 index.js,然后渲染到 index.html 的 root 节点上

const count = 100;

const list = [
{id: 1001, name: 'Vue'},
{id: 1002, name: 'React'},
{id: 1003, name: 'Angular'},
];

function App() {
return (


this is App
{/ 渲染列表/}
{list.map(item =>
  • {item.name}
  • )}

    );
    }

    export default App;
    注意:

    渲染哪个结构就 return 那个

    循环渲染记得要加上独一无二的 key(类型为 string 或 number)

    2.4 JSX 实现条件渲染
    在 React 中,可以通过逻辑与运算符 &&、三元表达式(?:)实现*基础的条件渲染

    类似 Vue 的 v-if

    // 项目的根组件
    // App -> index.js -> public/index.html(root) => App 根组件被导入到 index.js,然后渲染到 index.html 的 root 节点上

    const isLogin = true;

    function App() {
    return (


    {/ 1. 逻辑与 &&/}
    {isLogin && this is span}


    {/ 2. 三元运算/}
    {isLogin ? is Login : not Login}

    );
    }

    export default App;

    2.4.1 JSX 条件渲染的 demo
    // 项目的根组件
    // App -> index.js -> public/index.html(root) => App 根组件被导入到 index.js,然后渲染到 index.html 的 root 节点上

    const articleType = 3; // 0 1 3 'articleType' 的取值范围

    // 定义核心函数(根据文章类型返回不同的 JSX 模板)
    function getArticleTemplate() {
    if (articleType === 0) {
    return

    我是图文文章

    } else if (articleType === 1) {
    return
    我是单图文章

    } else {
    return
    我是三图文章

    }

    }

    function App() {
    return (


    {/ 调用函数渲染不同模板/}
    {getArticleTemplate()}

    );
    }

    export default App;
    显示:我是三图文章

    1. React 基础事件绑定
      语法:on + 事件名 = {事件处理程序/函数名},遵循驼峰命令

    1.绑定事件

    // 项目的根组件
    // App -> index.js -> public/index.html(root) => App 根组件被导入到 index.js,然后渲染到 index.html 的 root 节点上

    function App() {
    const handleClick = () => {
    console.log('button 被点击了');
    }

    return (




    );
    }

    export default App;
    2.传递事件参数 e

    // 项目的根组件
    // App -> index.js -> public/index.html(root) => App 根组件被导入到 index.js,然后渲染到 index.html 的 root 节点上

    function App() {

    // 拿到事件参数 e
    const handleClick = (e) => {
        console.log('button 被点击了', e);
    }
    

    return (




    );
    }

    export default App;
    3.传递自定义参数

    // 项目的根组件
    // App -> index.js -> public/index.html(root) => App 根组件被导入到 index.js,然后渲染到 index.html 的 root 节点上

    function App() {

    // 传递自定义参数
    const handleClick = (name) => {
        console.log('button 被点击了', name);
    }
    

    return (


    {/ 箭头函数传参/}


    );
    }

    export default App;
    4.同时传递自定义参数和事件参数 e

    // 项目的根组件
    // App -> index.js -> public/index.html(root) => App 根组件被导入到 index.js,然后渲染到 index.html 的 root 节点上

    function App() {
    // const handleClick = () => {
    // console.log('button 被点击了');
    // }

    // 拿到事件参数 e
    // const handleClick = (e) => {
    //     console.log('button 被点击了', e);
    // }
    
    const handleClick = (name, e) => {
        console.log('button 被点击了', name, e);
    }
    

    return (


    {/ 箭头函数传参/}


    );
    }

    export default App;

    相关文章
    |
    4月前
    |
    前端开发 JavaScript UED
    React 基础与实践 | 青训营笔记
    React 基础与实践 | 青训营笔记
    61 0
    |
    前端开发
    前端学习笔记202305学习笔记第二十九天-React keep alive原理之2
    前端学习笔记202305学习笔记第二十九天-React keep alive原理之2
    84 0
    |
    前端开发
    前端学习笔记202306学习笔记第四十八天-react-admin marmelab之8
    前端学习笔记202306学习笔记第四十八天-react-admin marmelab之7
    53 0
    |
    7月前
    |
    前端开发 JavaScript
    前端知识笔记(二十六)———React如何像Vue一样将css和js写在同一文件
    前端知识笔记(二十六)———React如何像Vue一样将css和js写在同一文件
    73 1
    |
    前端开发
    前端笔记:React的form表单全部置空或者某个操作框置空的做法
    在React框架前端开发中,经常会有弹出框的开发,涉及到弹出框,难免就会有表单。一般在关闭弹出框或者对表单联动时,往往都需要考虑对表单进行置空操作了。
    112 0
    |
    Web App开发 前端开发 JavaScript
    前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
    前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
    86 0
    |
    JavaScript 前端开发 调度
    前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber和虚拟dom关系
    前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber和虚拟dom关系
    122 0
    |
    前端开发
    前端学习笔记202305学习笔记第二十九天-React keep alive原理之1
    前端学习笔记202305学习笔记第二十九天-React keep alive原理之1
    52 0
    |
    前端开发
    前端学习笔记202305学习笔记第二十九天-React keep alive原理之4
    前端学习笔记202305学习笔记第二十九天-React keep alive原理之4
    49 0
    |
    前端开发
    前端学习笔记202305学习笔记第二十九天-React keep alive原理之5
    前端学习笔记202305学习笔记第二十九天-React keep alive原理之5
    51 0