
React
文章平均质量分 72
祥哥的说
精一技而绝天下。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
React使用及原理
一、jsx基本知识串讲1、2、vue:react:3、7-7 React父子组件通讯7-8 setState为何使用不可变值 ******原创 2021-02-13 19:58:16 · 291 阅读 · 0 评论 -
react必知必会
1、React16.3之前和之后生命周期的区别,为什么要这样做原创 2020-09-21 14:18:50 · 1323 阅读 · 0 评论 -
getDerivedStateFromProps和getSnapshotBeforeUpdate
和都是 React 中的生命周期方法,用于在组件渲染过程中进行状态管理和数据处理。方法是 React 16.3 新增的生命周期方法,用于在 props 发生变化时更新组件的 state。该方法接收两个参数:props 和 state,返回一个对象用于更新组件的 state。这个方法的主要作用是在组件挂载时和更新时都会被调用,允许组件在不同的状态下更新自己的 state。需要注意的是,使用如果上述两种情况都不满足,就没有必要使用方法来更新组件的 state。原创 2023-03-05 14:21:23 · 1757 阅读 · 0 评论 -
useCallback、useMemo、React.memo
是自定义的对比函数,它接受前一个 props 对象和后一个 props 对象作为参数,并返回一个布尔值。如果不传入第二个参数,则会使用默认的浅比较函数进行对比。方法对比 props 是否相同,该方法会进行浅比较,只对比 props 的第一层属性是否相等,如果属性值是对象或数组等引用类型,则只比较它们的。的实现原理是对比组件的前后两次渲染传入的 props 是否相等,如果相等则不会触发重新渲染,否则会触发。是 React 中用于函数组件优化的高阶组件,可以在一定程度上减少组件的重渲染,提升应用性能。原创 2023-03-05 14:10:39 · 542 阅读 · 0 评论 -
错误异常捕获
是一种 React 组件,它可以在其子组件树的渲染期间捕获 JavaScript 异常,并且可以渲染出备用 UI。如果一个错误边界无法渲染错误信息,则错误会冒泡至最近的上层错误边界,这也类似于 JavaScript 中。5、React 不需要错误边界来捕获事件处理器中的错误。参数包含有关组件引发错误的组件堆栈的信息。,不同的地方在于错误边界只针对 React 组件。1、错误边界可以捕获发生在整个子组件树的渲染期间、生命周期方法以及构造函数中的错误。生命周期方法在错误边界内的任何子组件抛出错误时被调用。原创 2023-03-05 11:26:23 · 3090 阅读 · 0 评论 -
@connect装饰器在react-redux中的应用
connect 方法connect 是一个函数,绑定 State 到 View。import React from 'react'import {render} from 'react-dom'import {connect} from 'react-redux'import {bindActionCreators} from 'redux'import action from 'action.js' class App extends React.Component{ render()原创 2021-02-19 18:06:27 · 508 阅读 · 0 评论 -
react hooks如何获取上一轮的props或者state
通过 ref 来手动获取上一轮props或者state的值:function Counter() { const [count, setCount] = useState(0); const prevCountRef = useRef(); useEffect(() => { prevCountRef.current = count; }); const prevCount = prevCountRef.current; return <h1>Now:原创 2021-02-15 22:57:10 · 5265 阅读 · 1 评论 -
对比分析组件逻辑复用的三种方案
组件逻辑复用的三种方案一、复用组件逻辑的方案二、3种复用组件逻辑方案的优劣对比一、复用组件逻辑的方案HOC:高阶组件Render PropsHooks1、通过高阶组件HOC复用组件逻辑import React from 'react'// 高阶组件const withMouse = (Component) => { class withMouseComponent extends React.Component { constructor(props) {原创 2021-02-15 22:35:55 · 801 阅读 · 0 评论 -
React Hooks踩坑日记
一、useState初始化值,只有第一次有效开发遇到的场景:(1)父组件请求结果传给子组件,作为子组件列表state的默认值,用于渲染。(2)子组件自己的二次请求,将请求结果进行set更新列表state,用于渲染。(3)当时的想法:子组件自己维护二次请求结果,父组件触发请求时,通过改变子组件的默认值,将列表数据更新到子组件。用下面的例子说明这个问题的坑在哪里:import React, { useState } from 'react'// 子组件function Child({ us原创 2021-02-15 17:14:58 · 1526 阅读 · 0 评论 -
react减少子组件重复渲染的优化方法
背景:子组件传递两个属性,一个是数据属性useInfo,一个是函数属性onChange当父组件的number更新之后,子组件虽然不依赖number,但仍旧被强制更新。优化方案:1、类组件处理:SCU优化class Children extends Component { shouldComponentUpdate(nextProps) { if(this.props.useInfo !== nextProps.useInfo) { return true .原创 2021-02-15 13:55:53 · 4139 阅读 · 1 评论 -
react hooks必知必会
14-1 出几道React-Hooks面试题14-2 class组件存在哪些问题14-3 用useState实现state和setState功能14-4 用useEffect模拟组件生命周期14-5 用useEffect模拟WillUnMount时的注意事项14-6 useRef和useContext14-7 useReducer能代替redux吗import React, { useReducer } .原创 2021-02-14 22:35:37 · 653 阅读 · 0 评论 -
React Portals使用方法和使用场景
1、什么场景需要用React Portals(传送门)Portal 提供了一种将子节点渲染到存在于父组件以外的 DOM 节点的优秀的方案。ReactDOM.createPortal(child, container)第一个参数(child)是任何可渲染的 React 子元素,例如一个元素,字符串或 fragment。第二个参数(container)是一个 DOM 元素。2、使用方法3、使用场景一个 portal 的典型用例是当父组件有overflow: hi..原创 2021-02-13 21:52:23 · 1015 阅读 · 0 评论 -
React中setState更新机制、batchUpdate机制和transaction事务机制
React中setState的有关问题1、react的setState是如何更新的?2、setState是同步的还是异步的?3、setState什么时候合并,什么时候不合并?核心要点:1、react的setState是如何更新的?setStated的执行原理:setState接收一个新的状态该接收到的新状态不会被立即执行么,而是存入到pendingStates(等待队列)中判断isBatchingUpdates(是否是批量更新模式)1>. isBatchingUpdate原创 2021-02-13 21:39:13 · 3834 阅读 · 0 评论 -
React-组件公共逻辑抽离的两种方式
React-组件公共逻辑抽离的两种方式高阶组件Render Props以获取鼠标位置的公共逻辑为例:1、高阶组件import React from 'react'// 高阶组件const withMouse = (Component) => { class withMouseComponent extends React.Component { constructor(props) { super(props)原创 2021-02-13 15:30:36 · 2032 阅读 · 0 评论 -
React的类组件和函数组件context使用以及Hook中useContext使用
使用流程:生产消费import React from 'react'// 创建 Context 填入默认值(任何一个 js 变量)const ThemeContext = React.createContext('light')// 底层组件 - 函数是组件function ThemeLink (props) { // const theme = this.context // 会报错。函数式组件没有实例,即没有 this // 函数式组件可以使用 Consumer原创 2021-02-13 11:44:54 · 5042 阅读 · 0 评论 -
JSX由浅入深的全面总结
不使用 JSX 的 React每个 JSX 元素只是调用 React.createElement(component, props, ...children) 的语法糖。因此,使用 JSX 可以完成的任何事情都可以通过纯 JavaScript 完成。使用对比:用 JSX 编写的代码:class Hello extends React.Component { render() { return <div>Hello {this.props.toWhat}</div&原创 2021-02-05 09:03:46 · 201 阅读 · 1 评论 -
react中数据状态管理的四种方案
先列个大纲,目标:分析每中方案的实践应用,以及实现思路,优缺点。1、redux2、mobx3、dva4、hook原创 2021-01-30 17:49:09 · 4480 阅读 · 1 评论 -
探究react的事件机制(合成事件)
react的事件机制实现原理原创 2021-01-30 17:47:18 · 2899 阅读 · 0 评论 -
(在构造函数中)调用 super(props) 的目的是什么
目的:在 super() 被调用之前,子类是不能使用 this 的,ES6 要求,子类的构造函数必须执行一次super函数,否则 JavaScript 引擎会报错。传递 props 给 super() 的原因则是便于(在子类中)能在 constructor 访问 this.props。super是什么?怎么用?super是关键词角色:1、当函数使用。 2、当对象使用。1、super当函数使用super作为函数调用时,代表调用父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数原创 2021-01-25 23:04:58 · 2615 阅读 · 3 评论 -
React事件处理的方式/绑定this的5种方式/事件回调函数传递参数
一、在React元素绑定事件要注意的三点1、React中事件的命名采用驼峰命名法,而不是原生dom中的小写。如:onclick要写成onClick,onchange要写成onChange2、使用 JSX 语法时你需要传入一个函数作为事件处理函数,而不是以dom字符串的形式在dom中:<button οnclick=“clickMe()”>不服点我</button>React中:<button onClick={clickButton}>不服点我&l原创 2021-01-25 12:14:32 · 2085 阅读 · 0 评论 -
react组件类型及深入理解react高阶组件
React中常见的组件类型及分类:1、展示组件(Presentational component) 与 容器组件(Container component)2、类组件(Class component) 与 函数式组件(Functional component)3、受控组件(Controlled Component )与 非受控组件(Uncontrolled Component )4、高阶组件(higher order component)1、展示组件(Presentational compone原创 2021-01-24 15:37:01 · 935 阅读 · 0 评论 -
react中Refs的作用/创建/使用/访问
Refsrefs,我的理解就是react提供的一种方式或者工具。refs的作用:访问DOM节点访问React元素为什么要使用refs?在某些情况下,你需要在典型数据流之外强制修改子组件。被修改的子组件可能是一个 React 组件的实例,也可能是一个 DOM 元素。对于这两种情况,可以使用react提供的refs来获取需要的目标元素或者实例。什么时候使用refs?记录一个项目中用到的场景:使用refs获取react的ScrollView的组件实例,从而使用组件的scrollTo方法。代码原创 2021-01-21 21:42:28 · 1385 阅读 · 1 评论 -
React Diff算法详解
react diff原创 2021-01-14 21:33:24 · 6695 阅读 · 0 评论 -
React 中的事件处理-传递两个参数
changeHandle = (f, s) => { console.log('888:',f) console.log('999:',s) }Item.itemContent.map(item => { return <li key={item.name} className={classname({'active': thi...原创 2019-11-30 21:24:04 · 1243 阅读 · 0 评论 -
webpack的安装配置使用方法
Webpack是目前基于React和Redux开发的应用的主要打包工具。我想使用Angular 2或其他框架开发的应用也有很多在使用Webpack。当我第一次看到Webpack的配置文件时,它看起来非常的陌生,我非常的疑惑。经过一段时间的尝试之后我认为这是因为Webpack只是使用了比较特别的语法和引入了新的原理,因此会让使用者感到疑惑。这些也是导致Webpack不被人熟悉的原因。因为刚开始使...转载 2018-03-26 20:27:42 · 877 阅读 · 0 评论 -
react+webpack+webstorm开发环境搭建
需要安装的软件node.jsnpm包管理以上两个包的下载地址如下:https://nodejs.org/dist/v6.3.0/node-v6.3.0.pkg由于6.3.0版本之后会自带npm的包管理所以不需要单独的安装npm更换npm库的源由于国内的网络原因,推荐只用阿里的npm源地址npm config set registry https://registry.npm.taobao....转载 2018-03-06 10:35:12 · 790 阅读 · 0 评论 -
webstorm环境下,react+webpack+nodejs搭建项目环境
一、创建基本目录结构1.新建项目工程:PockerUI2.配置jsx3.安装 webpack在此之前你应该已经安装了 node.js.npm install webpack -g1参数-g表示我们将全局(global)安装 webpack, 这样你就能使用 webpack 命令了.webpack 也有一个 web 服务器 webpack-dev-server, 我们也安装上npm ins...转载 2018-03-05 22:01:12 · 1155 阅读 · 0 评论 -
WebStorm中Reactjs库配置
前言WebStorm作为目前最流流行的前端IDE, 无论从运行速度还是开发的便捷性,无形之中提高了工作效率,目前比较火爆的React也越来越被众多开发人员所采纳,但是WebStorm下的React工程经常会出现很多警告以及转换提示,下面我就对此做一些整理,方便更多同志使用。React Library支持点击下载按钮,下来所需要的react library:激活所选library, 应用即可支持JS...转载 2018-03-01 11:27:04 · 675 阅读 · 0 评论 -
event.stopPropagation()和event.preventDefault()
阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别 / 编辑 删除 今天来看看前端的冒泡和事件默认事件...转载 2018-03-01 09:45:57 · 16589 阅读 · 2 评论 -
React.createClass()方法
react组件 -- React.createClass()方法1、React.createClass()方法用于生成一个组件类2、所有组件类都必须有自己的render方法,用于输出组件3、假如生成一个组件类HelloMessage,模板插入<HelloMessage />时,会自动生成组件类HelloMessage的一个实例4、组件类的第一个字母必须大写,否则会报错,比如HelloW...转载 2018-02-28 16:34:54 · 15900 阅读 · 1 评论 -
开发 react 应用最好用的脚手架 create-react-app
在开发react应用时,应该没有人用传统的方法引入react的源文件(js),然后在html编辑吧。大家都是用webpack + es6来结合react开发前端应用。这个时候,我们可以手动使用npm来安装各种插件,来从头到尾自己搭建环境。比如:npm install react react-dom --savenpm install babel babel-loader babel-core b...转载 2018-03-07 10:22:08 · 11753 阅读 · 0 评论 -
webstorm 快速搭建react项目
强烈推荐30个原生JavaScript的demo,包括canvas时钟特效、自定义视频播放器、搜索栏快速匹配、fetch访问资源、console调试技巧等,先fork后学习,详见点击打开链接,欢迎点赞~~~谢谢,共同进步学习!前端新手如何安装webstorm ,初步搭建react项目下载安装webstorm:配置成功:配置成功后就可以开启webstorm项目了。(存微信收藏、、)...转载 2018-03-07 10:07:49 · 30861 阅读 · 3 评论 -
react学习笔记
1、react是一个用于构建用户界面的JavaScript库,主要用于构建UI界面。语法:注释:要用花括号,包含在div元素内,要嵌套多个HTML标签时使用div包括。 ReactDOM.render( <div> <h1 style={mystyle}>sun</h1>{/*我是注释*/} ...原创 2019-02-20 23:23:03 · 229 阅读 · 0 评论 -
React 定时器自动更新Demos
先上完整代码:<!DOCTYPE html><html> <head> <meta charset="UTF-8" /> <title>Hello World</title> <script src="https://unpkg.com/react@16/umd/react.deve...原创 2019-05-14 16:41:43 · 2076 阅读 · 0 评论 -
redux-thunk的demo例子学习---祥哥的说
applyMiddlewares:它是 Redux 的原生方法,作用是将所有中间件组成一个数组,依次执行。https://blog.csdn.net/liwusen/article/details/76349811二、applyMiddleware的两种写法因此在applyMiddleware的时候,就会存在两种写法,这里我们以利用redux-thunk为例。(1)直接调用a...原创 2019-08-23 00:02:19 · 631 阅读 · 0 评论 -
react组件的componentDidMount、componentWillUnmount与DOM节点渲染的先后顺序
先看一个官网中的时钟例子:class Clock extends React.Component { constructor(props) { super(props); this.state = {date: new Date()}; }//组件的挂载钩子函数 componentDidMount() { this.timerID = setInterv...转载 2019-07-25 08:57:52 · 9379 阅读 · 1 评论 -
react生命周期
原创 2019-07-25 09:05:14 · 150 阅读 · 0 评论 -
react标签属性dangerouslySetInnerHTML将字符串或者DOM转化为html
根据需求,前端页面有时需要动态展示后端返回的代码,但是此时的代码是字符串类型,直接展示,页面显示的只是字符串,这时就用到了react标签属性dangerouslySetInnerHtml属性;dangerouslySetInnerHtml用法:dangerouslySetInnerHtml = {__html:'这里是后端返回字符串代码'}在使用reactjs库的时候,会遇到将一段...转载 2019-07-24 09:02:16 · 1627 阅读 · 0 评论 -
react中label标签关联的用法
<label htmlFor="markdown-content"> Enter some markdown </label> <textarea id="markdown-content" onChange={this.handleChange} ...原创 2019-07-24 08:50:59 · 2493 阅读 · 0 评论 -
react在标签元素中使用样式
使用JSX语法添加样式:使用style={{color:'red',width:'300px'}}注意点:(1)使用双花括号。(2)属性值要使用时引号字符串形式。(3)多个样式属性使用“,”隔开。ReactDOM.render(<Cascader style={{color:'red'}} options={options} onChange={onChange} changeO...原创 2019-07-24 08:05:17 · 2413 阅读 · 0 评论