当前位置: 首页 > news >正文

React.js教程:从JSX到Redux的全面解析

文章目录

    • 介绍
    • react脚手架
    • jsx语法和react组件
      • jsx的基本语法
      • jsx的行内样式
      • jsx的类名className
      • if条件渲染
      • map循环渲染
      • 创建组件方法
    • 可视区渲染 (React- virtualized)
    • React-redux

介绍

  • javascript库,起源于Facebook的内部项目,类似于vue
  • 特点
    • 声明式
    • 组件化
  • 安装
    • npm i react react-dom -S
      • react包:是核心,提供创建元素,组件等功能
      • react-dom包:提供DOM相关功能

react脚手架

  • 初始化项目:npx create-react-app 项目名称
    • npx 不是 npm npx 去找到对应的脚手架安装执行 所以我们不需要先安装
  • 启动项目:npm start
  • 脚手架中使用react的步骤
    1. 导入react和react-dom两个包
      import React from 'react' 
      import ReactDom from 'react-dom'
      
    2. 创建元素
      // React.createElement('标签名', {属性名: 属性值}, 标签内容) 
      let element = React.createElement('h1', {id: 'tt'}, '春风十里不如你')
      
    3. 渲染到页面
      ReactDom.render(创建的元素, 页面上的dom元素) 
      ReactDom.render(element, document.getElementById('root'))
      

jsx语法和react组件

jsx的基本语法

import React form 'react'
import ReactDom from 'react-dom'
// {}可以写变量、算数、三元表达式 不能写for、if这些语句
let name = '呼呼'
let age = 18
let div = <div><h1>我是div里面的h1标签</h1><div>{name}</div><h2>{1 + 1}</h2><h3>{age >= 18 ? '已成年' : '未成年'}</h3>
</div>
console.log(name)
ReactDom.render(div, document.getElementById('root'))

jsx的行内样式

import React form 'react'
import ReactDom from 'react-dom'/*** 1.第一个 {} 代表的是js* 2.第二个 {} 代表的是对象* 3.style = {}*/let div = <div style={{ color: 'red', background: 'pink' }}>我是div标签</div>ReactDom.render(div, document.getElementById('root'))

jsx的类名className

import React form 'react'
import ReactDom from 'react-dom'
import './style/index.css'
let div = <div className='box'>我是一个小哈哈</div>
ReactDom.render(div, document.getElementById('root'))

if条件渲染

import React form 'react'
import ReactDom from 'react-dom'
// react中的if条件渲染:就是原生js的if直接判断
let isLoading = false
let div = ''
if (isLoading) {div = <div><h3>加载中...</h3></div>
} else {div = <div><h3>加载完成</h3></div>
}
ReactDom.render(div, document.getElementById('root'))

map循环渲染

import React form 'react'
import ReactDom from 'react-dom'let arr = [{ id: 1, name: '三国演义' },{ id: 2, name: '水浒传' },{ id: 3, name: '西游记' },{ id: 4, name: '红楼梦' }
]
let ul = <ul>{arr.map(item => <li key={item.id}>{item.name}</li>)}</ul>
ReactDom.render(ul, document.getElementById('root'))

创建组件方法

  1. 函数组件
    1.1 首字母必须大写
    1.2 必须return,如果不想渲染东西,就return null
    1.3 使用的时候直接写组件标签就可以
    import React form 'react'
    import ReactDom from 'react-dom'function Hender() {// 这里必须returnreturn <div>我是函数组件 <h1>创建组件</h1></div>
    }
    ReactDom.render(<Hender></Hender>, document.getElementById('root'))
    
  2. class类组件
    2.1 首字母必须大写
    2.2 class组件名 extends React.Component{}
    2.3 里面必须写render,render里面必须return
    import React form 'react'
    import ReactDom from 'react-dom'class Hender extends React.Component() {render() {return <div>class类组件 <h1>h3标签</h1></div>}
    }
    ReactDom.render(<Hender></Hender>, document.getElementById('root'))
    

可视区渲染 (React- virtualized)

  • 只渲染看见的几条和前后几条,不管数据有多少,性能很高
  • 原理:只渲染页面可视区域的列表项,非可视区域的数据完全不渲染 (预加载前面几项和后面几项),在滚动列表是动态更新列表项

React-redux

  • 概念
    • 在react-redux写的是数据,都是全局数据,所有组件都可以用
    • 是react里面的全局数据状态管理
  • react-redux与redux的关系
    • redux:全局数据管理,在vue、jq、react都可以用,比较繁琐
    • react-redux:专门在react使用,基于redux的封装,配套
  • 使用步骤
    1. 下载react-redux redux包:npm i react-redux redux -S
    2. index.js文件导入Provider、createStore
      import { Provider } from 'react-redux'
      import { createStore } from 'redux'
    3. 使用createStore创建全局数据
      3.1 createStore(reducer函数, 全局state数据对象)
    4. 使用Provider包裹App根组件并传入store

http://www.mrgr.cn/news/63263.html

相关文章:

  • @DeleteMapping和@PostMapping和@GetMapping和Content-Type使用记录
  • git commit应遵循的提交规范
  • 区块链-C++挖矿软件XMRIG源码分析
  • goframe开发一个企业网站 生成代码3
  • 【办公类-04-04】华为助手导出照片视频分类(根据图片、视频的文件名日期导入“年-月-日”文件夹中,并转移到“年-月”文件中整理、转移到“年”文件夹中整理)
  • 初识字节码文件--Java
  • Vision - 开源视觉分割算法框架 Grounded SAM2 配置与推理 教程 (1)
  • 洪水风险评估——洪水制图
  • 三色激光投影仪推荐:一篇文章盘点三色激光投影仪的优劣处
  • 基于JavaSpringMVC+Mybatis+Jquery高校毕业设计管理系统设计和实现
  • 沈阳乐晟睿浩科技有限公司抖音小店短视频时代的电商蓝海
  • 网络爬虫中的反爬虫技术:突破限制,获取数据
  • VUE3——readonly与shallowReadonly
  • 本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——8ResNet模型的使用
  • 力扣(leetcode)每日一题 3259 超级饮料的最大强化能量|动态规划
  • Python实现XGBoost-MLP分类模型项目实战
  • Python零基础 [2.5] 判断语句嵌套的详解与示例
  • 面试遇到的问题
  • 【笔记】KV-cache
  • 如何实现PLC系统时钟显示在HMI上?
  • 地下隧道、管廊非接触式二维位移监测裂纹、衬砌、支护结构损伤识别、隧道病害诊断等问题解决方式——变焦视觉位移监测仪
  • C++初阶(八)--初识模板
  • 制作一个简易恒流电子负载教程,实战教程,单片机程序,电路图,方案
  • 基于字符的图片验证码识别算法的设计与实现
  • springcloud通过MDC实现分布式链路追踪
  • 九识智能与徐工汽车达成战略合作,共绘商用车未来新蓝图