React 学习小结(五)

Obsidian从零搭建:可验证、可回溯、可演进的知识库工具链 个人知识库不是开箱即用的软件,而是基于Markdown内核构建的可演进系统。其核心原理在于分离‘稳定内核’与‘可插拔扩展’:Obsidian原生支持双链、嵌入、Frontmatter等基础能力,构成不可降级的知识骨架;而Dataview、Templater等插件则作为可验证、可回溯的增强层,需通过三问验证(解决痛点?有原生替代?失效可降级?)方可引入。这种设计赋予知识库技术价值——抗版本升级、跨平台兼容、离线可用,并支撑技术文档管理、项目复盘、读书笔记等真实场景。当面对computer use插件不可用或h 阅读详情

所有的 Tips 均为本人 OneNote 中的笔记,复制过来就是图片,懒得转文本了

第七章:redux

一、相关理解

1.1 redux是什么

  1. redux 是一个专门用于做状态管理的JS库(不是 react 插件库)
  2. 它可以用在 react, angular, vue 等项目中, 但基本与 react 配合使用
  3. 作用:集中式管理react应用中多个组件共享的状态
  4. redux 将组件里组员被共享的妆状态单独拎出来,有需要的组件就自己去获取

1.2 什么情况下需要使用 redux

  1. 某个组件的状态,需要让其他组件可以随时拿到(共享)
  2. 一个组件需要改变另一个组件的状态(通信)
  3. 总体原则:能不用就不用, 如果不用比较吃力才考虑使用

1.3 redux 工作流程

在这里插入图片描述
React Components:React 组件
Action Creators:动作创建
dispatch:分发动作
type:如 加减乘除
data:如 1、2、3、4
Store:仓库
Reducers:改变状态(也可以用来初始化状态,此时 action 为初始化,previousState 为 undefined)

二、核心概念

2.1 action

  1. 动作的对象
  2. 包含2个属性
    (1)type:标识属性, 值为字符串, 唯一, 必要属性
    (2)data:数据属性, 值类型任意, 可选属性
  3. 例子:{ type: ‘ADD_STUDENT’,data:{name: ‘tom’,age:18} }

2.2 reducer

  1. 用于初始化状态、加工状态
  2. 加工时,根据旧的state和action, 产生新的state的纯函数(后面介绍)

2.3 store

  1. 将state、action、reducer联系在一起的对象
  2. 如何得到此对象:
    (1)import {createStore} from ‘redux’
    (2)import reducer from ‘./reducers’
    (3)const store = createStore(reducer)
  3. 此对象的功能:
    (1)getState(): 得到state
    (2)dispatch(action): 分发action, 触发reducer调用, 产生新的state
    (3)subscribe(listener): 注册监听, 当产生了新的state时, 自动调用

三、核心API

3.1 createstore

作用:创建包含指定reducer的store对象

3.2 store对象

  1. 作用: redux库最核心的管理对象
  2. 它内部维护着:
    (1)state
    (2)reducer
  3. 核心方法:
    (1)getState()
    (2)dispatch(action)
    (3)subscribe(listener)
  4. 具体编码:
    (1)store.getState()
    (2)store.dispatch({type:‘INCREMENT’, number})
    (3)store.subscribe(render)

3.3 applyMiddleware

作用:应用上基于redux的中间件(插件库)

3.4 combineReducers

作用:合并多个reducer函数

四、求和案例

4.1 效果展示

在这里插入图片描述

4.2 纯 react 版实现

  1. 结构目录如下:
    在这里插入图片描述
  2. App.jsx
import React, { Component } from 'react'
import Count from './components/Count'

export default class App extends Component {
	render() {
		return (
			<div>
				<Count/>
			</div>
		)
	}
}
  1. src/components/Count/index.jsx
import React, { Component } from 'react'

export default class Count extends Component {

	state = {count:0}

	//加法
	increment = ()=>{
		const {value} = this.selectNumber
		const {count} = this.state
		this.setState({count:count+value*1})
	}
	//减法
	decrement = ()=>{
		const {value} = this.selectNumber
		const {count} = this.state
		this.setState({count:count-value*1})
	}
	//奇数再加
	incrementIfOdd = ()=>{
		const {value} = this.selectNumber
		const {count} = this.state
		if(count % 2 !== 0){
			this.setState({count:count+value*1})
		}
	}
	//异步加
	incrementAsync = ()=>{
		const {value} = this.selectNumber
		const {count} = this.state
		setTimeout(()=>{
			this.setState({count:count+value*1})
		},500)
	}

	render() {
		return (
			<div>
				<h1>当前求和为:{this.state.count}</h1>
				<select ref={c => this.selectNumber = c}>
					<option value="1">1</option>
					<option value="2">2</option>
					<option value="3">3</option>
				</select>&nbsp;
				<button onClick={this.increment}>+</button>&nbsp;
				<button onClick={this.decrement}>-</button>&nbsp;
				<button onClick={this.incrementIfOdd}>当前求和为奇数再加</button>&nbsp;
				<button onClick={this.incrementAsync}>异步加</button>&nbsp;
			</div>
		)
	}
}

4.3 redux 精简版实现

  1. 结构目录:
    在这里插入图片描述
  2. 操作步骤:
    (1)去除Count组件自身的状态
    (2)src下建立:
    redux/store.js 和 redux/count_reducer.js
    (3)store.js:
    a. 引入redux中的createStore函数,创建一个store
    b. createStore调用时要传入一个为其服务的reducer
    c. 记得暴露store对象
// store.js:
/* 
	该文件专门用于暴露一个store对象,整个应用只有一个store对象
*/
//引入createStore,专门用于创建redux中最为核心的store对象
import {createStore} from 'redux'
//引入为Count组件服务的reducer
import countReducer from './count_reducer'
//暴露store
//createStore创建store
export default createStore(countReducer)

(4)count_reducer.js:
a. reducer的本质是一个函数,接收:preState,action,返回加工后的状态
b. reducer有两个作用:初始化状态,加工状态
c. reducer被第一次调用时,是store自动触发的,
传递的preState是undefined,
传递的action是:{type:’@@REDUX/INIT_a.2.b.4}

// count_reducer.js:
/* 
	1.该文件是用于创建一个为Count组件服务的reducer,reducer的本质就是一个函数
	2.reducer函数会接到两个参数,分别为:之前的状态(preState),动作对象(action)
*/
const initState = 0 //初始化状态
// countReducer为createStore创建,传入先前状态preState和action两个参数
export default function countReducer(preState=initState,action){
	// console.log(preState);
	//从action对象中获取:type、data
	//action存在type和data属性
	const {type,data} = action
	//根据type决定如何加工数据
	switch (type) {
		case 'increment': //如果是加
			return preState + data
		case 'decrement': //若果是减
			return preState - data
		default:
			return preState
	}
}

(5)在index.js中监测store中状态的改变,一旦发生改变重新渲染<App/>
备注:redux只负责管理状态,至于状态的改变驱动着页面的展示,要靠我们自己写

import React from 'react'
import ReactDOM from 'react-dom'
import App from './App'
import store from './redux/store'

ReactDOM.render(<App/>,document.getElementById('root'))

// 监听状态,store监听reducer的状态改变,随后做出响应重新渲染页面
// 因 Diffing 算法存在,故效率不存在问题
store.subscribe(()=>{
	ReactDOM.render(<App/>,document.getElementById('root'))
})

(6)此时 Count 组件如下:

import React, { Component } from 'react'
//引入store,用于获取redux中保存状态
import store from '../../redux/store'

export default class Count extends Component {
	state = {carName:'奔驰c63'}
	// 此方法存在效率问题
	/* componentDidMount(){
		//检测redux中状态的变化,只要变化,就调用render
		store.subscribe(()=>{
			this.setState({})
		})
	} */
	
	//加法
	increment = ()=>{
		const {value} = this.selectNumber
		//dispatch:分发action的api
		store.dispatch({type:'increment',data:value*1})
	}
	//减法
	decrement = ()=>{
		const {value} = this.selectNumber
		store.dispatch({type:'decrement',data:value*1})
	}
	//奇数再加
	incrementIfOdd = ()=>{
		const {value} = this.selectNumber
		//getState:获取初始化状态,此处为count_reducer中的initState=0
		const count = store.getState()
		if(count % 2 !== 0){
			store.dispatch({type:'increment',data:value*1})
		}
	}
	//异步加
	incrementAsync = ()=>{
		const {value} = this.selectNumber
		setTimeout(()=>{
			store.dispatch({type:'increment',data:value*1})
		},500)
	}

	render() {
		return (
			<div>
				<h1>当前求和为:{store.getState()}</h1>
				<select ref={c => this.selectNumber = c}>
					<option value="1">1</option>
					<option value="2">2</option>
					<option value="3">3</option>
				</select>&nbsp;
				<button onClick={this.increment}>+</button>&nbsp;
				<button onClick={this.decrement}>-</button>&nbsp;
				<button onClick={this.incrementIfOdd}>当前求和为奇数再加</button>&nbsp;
				<button onClick={this.incrementAsync}>异步加</button>&nbsp;
			</div>
		)
	}
}

4.4 redux 完整版实现

  1. 新增文件 count_action.js 专门用于创建action对象
/* 
	该文件专门为Count组件生成action对象
*/
import {INCREMENT,DECREMENT} from './constant'

export const createIncrementAction = data => ({type:INCREMENT,data})
export const createDecrementAction = data => ({type:DECREMENT,data})

Tips:

  1. 外面包小括号表示返回一个对象
  2. 如果正常回调函数外面包花括号,并用return返回一个对象
  3. 用小括号省略return
  1. 新增文件 constant.js 放置容易写错的type值
/* 
	该模块是用于定义action对象中type类型的常量值,目的只有一个:便于管理的同时防止程序员单词写错
*/
export const INCREMENT = 'increment'
export const DECREMENT = 'decrement'
  1. 此时 Count 的实现为:
//奇数再加
incrementIfOdd = ()=>{
	const {value} = this.selectNumber
	const count = store.getState()
	if(count % 2 !== 0){
		store.dispatch(createIncrementAction(value*1))
	}
}

五、redux 异步编程

5.1 理解

  1. redux默认是不能进行异步处理的
  2. 某些时候应用中需要在redux中执行异步任务(ajax, 定时器)

5.2 使用异步中间件

npm install --save redux-thunk

5.3 举个例子

以求和案例为例

  1. 明确:延迟的动作不想交给组件自身,想交给action
  2. 何时需要异步action:想要对状态进行操作,但是具体的数据靠异步任务返回
  3. 具体编码:
    (1)yarn add redux-thunk,并配置在store中
    (2)创建action的函数不再返回一般对象,而是一个函数,该函数中写异步任务
    (3)异步任务有结果后,分发一个同步的action去真正操作数据
    (4)备注:异步action不是必须要写的,完全可以自己等待异步任务的结果了再去分发同步action

在这里插入图片描述

六、react-redux

6.1 理解

  1. 一个react插件库
  2. 专门用来简化react应用中使用redux

6.2 react-redux 将所有组件分成两大类

  1. UI组件
    (1)只负责 UI 的呈现,不带有任何业务逻辑
    (2)通过props接收数据(一般数据和函数)
    (3)不使用任何 Redux 的 API
    (4)一般保存在components文件夹下
  2. 容器组件
    (1)负责管理数据和业务逻辑,不负责UI的呈现
    (2)使用 redux 的 API
    (3)一般保存在containers文件夹下

6.3 模型图

在这里插入图片描述

6.4 相关API

  1. Provider:让所有组件都可以得到state数据
<Provider store={store}>
  <App />
</Provider>
  1. connect:用于包装 UI 组件生成容器组件
import { connect } from 'react-redux'
  connect(
    mapStateToprops,
    mapDispatchToProps
  )(Counter)
  1. mapStateToprops:将外部的数据(即state对象)转换为UI组件的标签属性
const mapStateToprops = function (state) {
  return {
    value: state
  }
}
  1. mapDispatchToProps:将分发action的函数转换为UI组件的标签属性

6.5 总结

  1. 明确两个概念:
    (1)UI组件:不能使用任何redux的api,只负责页面的呈现、交互等。
    (2)容器组件:负责和redux通信,将结果交给UI组件。
  2. 如何创建一个容器组件————靠react-redux 的 connect函数
    connect(mapStateToProps,mapDispatchToProps)(UI组件)
    -mapStateToProps:映射状态,返回值是一个对象
    -mapDispatchToProps:映射操作状态的方法,返回值是一个对象
  3. 备注1:容器组件中的store是靠props传进去的,而不是在容器组件中直接引入
  4. 备注2:mapDispatchToProps,也可以是一个对象
  5. 渲染容器组件,ui组件被创建并包裹在容器组件中,被一起渲染

七、react-redux优化

  1. 容器组件和UI组件整合一个文件
  2. 无需自己给容器组件传递store,给<App/>包裹一个<Provider store={store}>即可
  3. 使用了react-redux后也不用再自己检测redux中状态的改变了,容器组件可以自动完成这个工作。
  4. mapDispatchToProps也可以简单的写成一个对象
  5. 一个组件要和redux“打交道”要经过哪几步?
    (1)定义好UI组件—不暴露
    (2)在UI组件中通过this.props.xxxxxxx读取和操作状态
    (3)引入connect生成一个容器组件,并暴露,写法如下:

    connect(
    state => ({key:value}), //映射状态
    {key:xxxxxAction} //映射操作状态的方法
    )(UI组件)

八、数据共享

  1. 定义一个Person组件,和Count组件通过redux共享数据
  2. 为Person组件编写:reducer、action,配置constant常量
  3. 重点:Person的 reducer和 Count的 reducer要使用 combineReducers 进行合并,合并后的总状态是一个对象!!!
  4. 交给store的是总reducer,最后注意在组件中取出状态的时候,记得“取到位”
  5. 共享后可直接从 store 中取出 state
    在这里插入图片描述
    在这里插入图片描述

九、使用redux调试工具

9.1 安装chrome浏览器插件

在这里插入图片描述

9.2 下载工具依赖包

  1. yarn add redux-devtools-extension
  2. store中进行配置
import {composeWithDevTools} from 'redux-devtools-extension'
const store = createStore(allReducer,composeWithDevTools(applyMiddleware(thunk)))

十、纯函数和高阶函数

10.1 纯函数

  1. 一类特别的函数: 只要是同样的输入(实参),必定得到同样的输出(返回)
  2. 必须遵守以下一些约束
    (1)不得改写参数数据
    (2)不会产生任何副作用,例如网络请求,输入和输出设备
    (3)不能调用Date.now()或者Math.random()等不纯的方法
  3. redux的reducer函数必须是一个纯函数

10.2 高阶函数

  1. 理解: 一类特别的函数
    (1)情况1: 参数是函数
    (2)情况2: 返回是函数
  2. 常见的高阶函数:
    (1)定时器设置函数
    (2)数组的forEach()/map()/filter()/reduce()/find()/bind()
    (3)promise
    (4)react-redux中的connect函数
  3. 作用: 能实现更加动态, 更加可扩展的功能

十一、求和案例总结

  1. 所有变量名字要规范,尽量触发对象的简写形式
  2. reducers文件夹中,编写index.js专门用于汇总并暴露所有的reducer
  3. 项目打包运行
    在这里插入图片描述

React 系列小结:

React 学习小结(一)
React 学习小结(二)
React 学习小结(三)
React 学习小结(四)
React 系列小结(五)
React 系列小结(六)

多智能体强化学习中的Trust Region技术:HATRPO与HAPPO深度解析 本文深度解析多智能体强化学习中的Trust Region技术,重点探讨HATRPO(异质智能体信任区域策略优化)与HAPPO(异质智能体近端策略优化)两种先进算法。通过数学架构与工程实现细节,揭示其在解决联合策略空间爆炸、信用分配等挑战中的优势,并分享实际部署中的优化技巧与前沿进展。 阅读详情

相关推荐

从SFF-8087到SFF-8643:详解服务器硬盘背板连接线缆的演变与实战接线

本文深度解析了服务器硬盘背板连接技术从SFF-8087到SFF-8643的演进历程,重点介绍了SAS、SATA和U.2接口的技术特点与实战接线方案。通过对比不同连接器标准的物理特性和电气规范,提供了混合环境下的线缆选择策略和常见故障排查指南,帮助IT专业人员优化存储系统性能与稳定性。

weixin_30603633的博客 279

Vuex使用详解

一、Vuex概述 引用官方文档的话解释什么是Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 设想每个Vue组件都只需要关心自己的数据和数据处理逻辑,组件之间完全独立,没有共享数据的需求,那么web应用会非常简单。 但是实际情况是,一个web应用中不同组件常常会有数据共享的需求。例如文档类型的应用,编辑的内容和大纲之间要共享数据,大纲列表组件需要根据编辑的内容生成文档大纲、电商类

doomliu的博客 1367

Gromacs实战:从蛋白质-小分子对接到分子动力学模拟全流程解析

本文详细解析了使用Gromacs进行蛋白质-小分子复合物分子动力学模拟的全流程。从处理AutoDock等对接软件的结果文件开始,逐步指导如何为蛋白质和小分子分别生成拓扑文件,并解决力场合并的核心挑战。文章涵盖了构建模拟盒子、添加溶剂离子、能量最小化、平衡模拟以及关键的轨迹分析步骤,为计算生物学和药物设计研究者提供了一套从静态对接到动态评估的完整实战指南。

weixin_29251337的博客 1220

如何使用React实现简易的输入框增、删、改操作?

import React, { Component } from 'react' class App extends Component { //首先先写他的构造方法(构造函数) constructor(){ //super:继承 super() this.state = { inputValue: '', list : [] } } //input框输入事件

ni15534789894的博客 1300

5G LDPC编码实战:从校验矩阵到Matlab代码实现(附完整源码)

本文深入解析5G NR标准中的LDPC编码工程实现,聚焦于从3GPP协议中的QC-LDPC校验矩阵到高效Matlab代码的转换。文章详细阐述了基础矩阵(BG1/BG2)选择、提升因子确定以及利用双对角结构的快速编码算法,并提供了完整的、可优化的Matlab源码,旨在帮助通信算法工程师和开发者快速构建5G LDPC编码仿真原型,为硬件实现奠定基础。

table的专栏 377

贝塞尔曲线原理--曲线生成--路径规划--matlab代码

贝塞尔曲线有着很多特殊的性质, 在图形设计和路径规划中应用都非常广泛, 在路径规划中贝塞尔曲线完全由其控制点决定其形状, n个控制点对应着n-1阶的贝塞尔曲线,并且可以通过递归的方式来绘制.

bob595078694的博客 1万+

react 使用redux实现简易的加减

view在redux中会派发一个action,action通过store的dispatch方法派发给store,store接收到action,连同之前到state,一起传给reducer,reducer返回一个新到数据给store,store去改变自己到state。这是redux的一个标准流程 视频: 步骤: 1、react要使用redux的话,首先要安装 cnpm i redux react-redux -S //有淘宝镜像的安装指令 npm i redux react-redux -S .

weixin_46419373的博客 783

超详细 VMware Horizon 虚拟桌面VDI安装步骤

主要的目的是模拟生产环境中的共享存储。自动桌面相当于共享电脑,大家使用同一个虚拟机,对虚拟机的修改都放在用户的配置文件中,RDS桌面池相当于共享的服务器,可以多人同时连接到服务器上。1:之前已经建立好了NFS的存储,这部分配置好后,以后的虚拟机可以安装到NFS的存储中。2: 使用Composer发布系统可以解决SID,机器名冲突的问题,更重要的可以节约磁盘空间,发布的所有系统可以访问一块磁盘。26: 域选择我们之前建立的域,用户名我输入的是管理员,可以在AD域新建用户点击查找,我这里用的是管理员。

vv12345的博客 1万+

react基本使用

主要介绍了 react 的起源以及特点、基本使用步骤

小白小白从不日别的博客 2133

直流无刷电机FOC控制算法 理论到实践 —— 理论(二)

在上一章节,我们对于FOC大体有了一个介绍,本博文将详细描述有关Clark变化、Park变化、反Park变化以及SVPWM的理论实现原理,也即相关数学运算实现。

爱出名的狗腿子 1万+

Cadence Orcad Capture原理图断线的检查与避免方法

在设计电路图中,尤其是直接借鉴别人的设计进行二次开发的过程中难免会遇到如下尴尬的情况。有没有眼神好的朋友发现图纸的哪里有不对劲的地方呢?

fydar的博客 3269

基于react、react-redux的加减计数器

其实很早就已经解除react了,当时还看的是es5语法,本来js基础就不扎实,秉着初生牛犊不怕虎的精神去看了react,结果看了云里雾里,这种硬塞的知识过几天就全忘了,过了一段时间,想着有空了,就又去看了react,这次直接看的es6语法,看完后顺道看了react-redux,刚开始,很痛苦,本来react就已经不太容易理解了,再加上redux和react-redux,更加懵逼了,一个很简单的应用

taoweiquan0910的博客 4718

用 ABAP RAP + XCO 把 Excel 导入业务对象:从弹窗 Action 到 EML 落库与附件清理的完整实践

摘要:本文介绍了在SAP RAP框架下实现Excel批量导入功能的完整方案。通过XCO库的XLSX模块解析Excel文件,结合RAP的行为定义和Fiori Elements界面集成,构建了一个支持试运行、数据校验和自动合并的业务导入功能。方案采用RAP标准范式,包括Action参数设计、EML事务处理、附件管理以及异常消息反馈,实现了从文件上传到数据落库的端到端流程,既保证了系统稳定性,又提升了业务用户体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 278

ReactJS学习小结

ReactJS小结 关于ReactJS主要有以下几点: 1、ReactJs是基于组件化的开发,所以最终你的页面应该是由若干个小组件组成的大组件。 2、可以通过属性,将值传递到组件内部,同理也可以通过属性将内部的结果传递到父级组件(留给大家研究);要对某些值的变化做DOM操作的,要把这些值放到state中。 3、为组件添加外部css样式时,类名应该写成className而不是class;添加内部...

炒饭的博客 297

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

react学习小结

1.什么是react? 一个用于构建JavaScript的库 2.react特点? -声明式 -组件式 3.掌握react的基本使用? react:18.0.0和之前版本的使用方法不一样,下面使用的是17.0.0版本的 <div id="app"></div> <script src="./node_modules/react/umd/react.development.js"></script>...

tongtianjianmu的博客 1766

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

React小结

React框架学习 React的起源和发展 起初facebook在建设instagram(图片分享)的时候嘞,因为牵扯到一个东东叫数据流,那为了处理数据流并且还要考虑好性能方面的问题嘞,Facebook 开始对市场上的各种前端MVC框架去进行一个研究,然而并没有看上眼的,于是Facebook觉得,还是自己开发一个才是最棒的,那么他们决定抛开很多所谓的 “最佳实践”,重新思考前端界面的构...

Jun 1432

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

React 学习小结(一)

React 学习总结 第一部门入门知识

APythonC的博客 1124

React日常开发小结

React 需要 Fiber 来支持高优先级任务调度,以应对大型、复杂应用中的性能挑战;而 Vue 的响应式更新机制使得其不需要类似 Fiber 的架构来达到良好的性能表现。两者的差异源自设计目标和更新策略的不同,这也是两者在开发体验上的差异之一。

2401_87546826的博客 1083

React 学习小结(四)

所有的 Tips 均为本人 OneNote 中的笔记,复制过来就是图片,懒得转文本了 第五章:React 路由 一、相关理解 1.1 SPA的理解 单页Web应用(single page web application,SPA) 整个应用只有一个完整的页面 点击页面中的链接不会刷新页面,只会做页面的局部更新 数据都需要通过ajax请求获取, 并在前端异步展现 1.2 路由的理解 什么是路由? (1)一个路由就是一个映射关系 (key:value) (2)key 为路径, value 可能是 funct

APythonC的博客 647

使用ReactJs React-Bootstrap 构建网站(3):主题色设置

主题色设置 定义主题色 定义主题色的css文件,后缀名为scss. 记得要@import 一下bootstrap /* make the customizations */ $theme-colors: ( "info": tomato, "danger": teal ); /* import bootstrap to set changes */ @import "../node_modules/bootstrap/scss/bootstrap"; 引入主题色 引入主题

fenboo9416的博客 464

react小结

React React 是一个用于构建用户页面的JavaScript库,专注于视图,实现组件化开发。 React 特点 1.声明式设计 −React采用声明范式,可以轻松描述应用。 2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。 3.灵活 −React可以与已知的库或框架很好地配合。 4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用...

lidan724的博客 144

React 学习小结(六)

所有的 Tips 均为本人 OneNote 中的笔记,复制过来就是图片,懒得转文本了 第八章:react 扩展 一、扩展一:setState React 系列小结: React 学习小结(一) React 学习小结(二) React 学习小结(三) React 学习小结(四) ...

APythonC的博客 595

React——Hook小结

Hook 是什么? Hook 是 React 16.8 的新增特性。简单来说它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 Hook 使用规则 只能在函数最外层调用 Hook。不要在循环、条件判断或者子函数中调用。 只能在 React 的函数组件中调用 Hook。不要在其他 JavaScript 函数中调用。(还有一个地方可以调用 Hook —— 就...

、子筱的博客 2295

react-native学习小结

目录 一、prop,state,ref 二、React组件思想 三、react-native的两种写法:ES5(有时会遇到)、ES6(推荐写法) 一、prop,state,ref 1.ref:引用一个组件(是从render中返回该组件实例) 2.props:组件中的属性, 2.1常用于跳转页面的传值:this.props.navigator.push({co...

186

react-redux使用小结

redux使用小结redux使用小结 react-redux store reducer action 整合storereduceraction 补充 使用redux-dev-tools 让改变reducer后能够即时刷新页面 总结需要使用的库redux,react-redux,react-router-reduxreact-redux使用一个react-redux 的库使得redux的使用更简洁,

ali1995的博客 7292

视频教程- React-基础入门到项目开发-ReactJS

React-基础入门到项目开发 北京八维研修学院技术工程师,5年大型项目实...

weixin_32348545的博客 312
上一篇: React 学习小结(四)
下一篇: React 学习小结(六)
APythonC
博客等级 码龄7年 23粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值