
React
文章平均质量分 75
React
高先生的猫
求知若渴,虚心若愚。
展开
-
解读vue-server-renderer源码并在react中的实现
在SSR开发环境中,服务端的代码是是直接通过webpack打包成文件(因为里面包含同构的代码,就是服务端与客户端共享前端的组件代码),写到磁盘里,然后在启动打包好的入口文件来启动服务。但是我不想在开发环境把文件打包到磁盘中,想直接打包在内存中,这样不仅能优化速度,还不会因开发环境产生多余文件。还有就是webpack对require的处理,会导致路径映射的问题,包括对require变量的问题。所以我就想只有组件相关的代码进行webpack编译,别的无关的服务端代码不进行webpack编译处理。但是这中间有原创 2021-06-03 10:14:28 · 576 阅读 · 0 评论 -
用react-query解决你一半的状态管理问题
按照来源,前端有两类「状态」需要管理: 用户交互的中间状态 服务端状态 在陈年的老项目中,通常用Redux、Mobx这样的「全局状态管理方案」无差别对待他们。事实上,他们有很大区别:用户交互的中间状态比如组件的isLoading、isOpen,这类「状态」的特点是: 以「同步」的形式更新 「状态」完全由前端控制 「状态」比较独立(不同的组件拥有各自的isLoading) 这类「状态」通常保存在组件内部。当「状态」需要跨组件层级传递,通常使用C原创 2021-06-10 14:10:14 · 1299 阅读 · 0 评论 -
react Hooks 中使用anime.js
animejs是现如今非常不错的一个js动画库。我们将其与reactHooks 融合,使它更方便的在 React 中使用。最终效果:const Animate: React.FC = () => { const { animateTargetRef, animationRef } = useAnime({ translateX: 300, loop: true, duration: 2000, autoplay: false, }); ...原创 2021-02-20 09:50:01 · 1514 阅读 · 1 评论 -
React 最重要也最容易被遗忘的属性 $$typeof
为什么说$$typeof是最重要的属性?因为它是代码安全的一道重要防线。如果你用过react,对type、props、key、 和ref应该熟悉。但你不一定知道$$typeof?首先简单介绍下jsX当你在写jsX 时,其实你在调用createElement方法。react.createElement( /* type */ 'marquee', /* props */ { bgcolor: '#ffa7c4' }, /* children */ 'h...原创 2020-09-11 11:36:43 · 2091 阅读 · 0 评论 -
Vue和React有什么区别与优劣?我到底应该选择哪谁?
前端开发框架从最开始的jquery时代,到后来backbone,angular1,再到现在vue和react两分天下,也才用了不到十年的光景。最开始jquery是为了解决浏览器兼容性的问题而火起来的,准确的说它只是一个库,而不能成为框架。但随着前端页面的复杂度的增加,渐渐数据驱动和mv*的思想开始形成,有了backbone,angular等先驱。再之后随着AST,Bable,webpack等技术的兴起,一个逐渐晚上的前端框架体系也随之建立了起来,如今最入门的就是vue和react了。但由于vue和r原创 2020-08-31 10:19:40 · 8530 阅读 · 1 评论 -
解决页面刷新redux数据丢失问题
概念对于目前普遍的“单页应用”,其中的好处是,前端可以从容的处理较复杂的数据模型,同时基于数据模型可以进行变换,实现更为良好的交互操作。良好的交互操作背后,其实是基于一个对应到页面组件状态的模型,随便称其为UI模型。数据模型对应的是后端数据库中的业务数据,UI模型对应的是用户在浏览器一系列操作后组件所呈现的状态。这两个模型不是对等的!比如下图中这个管控台(不存在所谓的子页面,来进行单页路由的切换,而是一个类似portal的各块组件的切换):我们构建的这个单页应用,后端的数据.原创 2020-08-19 11:35:15 · 4849 阅读 · 0 评论 -
解决页面刷新redux数据丢失问题
概念对于目前普遍的“单页应用”,其中的好处是,前端可以从容的处理较复杂的数据模型,同时基于数据模型可以进行变换,实现更为良好的交互操作。良好的交互操作背后,其实是基于一个对应到页面组件状态的模型,随便称其为UI模型。数据模型对应的是后端数据库中的业务数据,UI模型对应的是用户在浏览器一系列操作后组件所呈现的状态。这两个模型不是对等的!比如下图中这个管控台(不存在所谓的子页面,来进行单页路由的切换,而是一个类似portal的各块组件的切换):我们构建的这个单页应用,后端的数据.原创 2020-08-06 10:22:04 · 2744 阅读 · 0 评论 -
react性能优化之bind(this)
bind在react组件中使用不当也会影响性能bind在render里面直接onClick = this.onClick.bind(this)这样写的话,render每次都会执行这段1、优化方案,使用箭头函数class Test extends react.Component { click = () => {} render() { return (<> <button onClick={this.click}原创 2020-08-05 10:52:58 · 357 阅读 · 0 评论 -
react性能优化之bind(this)
bind在react组件中使用不当也会影响性能bind在render里面直接onClick = this.onClick.bind(this)这样写的话,render每次都会执行这段1、优化方案,使用箭头函数class Test extends react.Component { click = () => {} render() { return (<> <button onClick={this.click}原创 2020-07-23 10:24:06 · 362 阅读 · 0 评论 -
React实现类似淘宝tab居中切换效果
DOM布局const label = { lettersort: false, paramname: "label", paramid: 0, title: "车源列表筛选项", option: [{ value: 1, text: "全部" }, { value: 2, text: "本地求购" }, { value: 3, text: "精准收车" }, {原创 2020-07-23 10:21:44 · 295 阅读 · 0 评论 -
用思维模型去理解 React
我了解到,掌握了某种语言、框架或工具的人与没有掌握的人之间的最大区别在于他们所使用的思维模型(Mental Model)。前者拥有清晰而先进的思维模型,而后者则没有。通过良好的思维模型,你可以直观地理解复杂的问题和解决方案,这比逐步的去寻求解决方案要快得多。我每天都用react工作,并且一直都在寻找解决难题的解决方案。我可以通过在围绕react创建的良好思维模型来做到这一点。在本文中,我将解释那些有助于解决问题和解决复杂性的思维模型。无论你是已经使用react多年的老鸟还是刚开始使用...原创 2020-07-15 10:16:59 · 382 阅读 · 0 评论 -
React-redux: React.js 和 Redux 架构的结合
通过Redux 架构理解我们了解到 Redux 架构的 store、action、reducers 这些基本概念和工作流程。我们也知道了 Redux 这种架构模式可以和其他的前端库组合使用,而react-redux 正是把 Redux 这种架构模式和react.js结合起来的一个库。Context在react应用中,数据是通过 props 属性自上而下进行传递的。如果我们应用中的有很多组件需要共用同一个数据状态,可以通过状态提升的思路,将共同状态提升到它们的公共父组件上面。但是我们知...原创 2020-07-14 13:29:37 · 269 阅读 · 0 评论 -
在 React.js 中自动复制文本到剪贴板
介绍在本文中,我们将学习怎样在reactjs中把文本复制到剪贴板。依赖的知识与环境react基本知识。 Visual Studio Code IDE。 Bootstrap 和html的基本知识。创建一个react项目首先,用以下命令创建一个reactApp。npx create-react-app platform然后在 Visual Studio Code 中打开新创建的项目,并使用以下命令安装 Bootstrap:npm install --...原创 2020-07-08 13:10:13 · 1383 阅读 · 0 评论 -
为什么我们要写 super(props) ?
据说 Hooks 势头正盛,不过我还是想略带调侃地从 class 的有趣之处开始这篇博客。可还行?这些梗对于使用react输出产品并不重要,但如果你想深入的了解它们的运作原理,它们会非常的有用。首先,在这一生中,super(props)出现在我代码里的次数比我知道的还要多:class Checkbox extends react.Component { constructor(props) { super(props); this.state = { isOn: tr...原创 2020-07-08 13:08:27 · 351 阅读 · 0 评论 -
Flutter vs React Native vs Native:深度性能比较
研究背后的故事inVerita(inveritasoft.com/)一直致力于移动跨平台方案的性能问题,以此来解答哪种场景下开发者需要使用 Flutter 、 React Native 或原生开发,甚至是你需要选择哪个职业。在之前的 《Flutter vs Native vs React-Native: Examining performance》 对比中有一个颇有争议的点,其中有人提出正常情况下我们是不会在 React Native 进行这些重复和复杂的计算,虽然在这种情况下,使用 Flutter原创 2020-07-06 10:14:43 · 3948 阅读 · 1 评论 -
在 React.js 中自动复制文本到剪贴板
介绍在本文中,我们将学习怎样在 ReactJS 中把文本复制到剪贴板。依赖的知识与环境React 基本知识。 Visual Studio Code IDE。 Bootstrap 和 HTML 的基本知识。创建一个 React 项目首先,用以下命令创建一个 React App。npx create-react-app platform然后在 Visual Studio Code 中打开新创建的项目,并使用以下命令安装 Bootstrap:npm install --.原创 2020-06-30 17:21:33 · 920 阅读 · 0 评论 -
React 搜索优化:防抖、缓存、LRU
最近要对 react 项目做重构优化等相关的工作,由于有好长时间没碰 React 了,今天索性把一个基于关键字搜索的 demo 做一下简单优化,在此记录以下。主要从三个方面进行优化处理: 减少事件的触发频率 - 对关键字键入进行debounce处理 减少 HTTP 请求 - 对重复的 HTTP 请求进行缓存拦截 缓存淘汰策略 - 使用 LRU 优化缓存 减少事件的触发频率 - debouncedebounce旨在时间段内控制事件只在最后一次操作触发。de...原创 2020-06-15 10:29:33 · 935 阅读 · 0 评论 -
为什么不建议使用 index 作为 key 值
今天探讨一个我们前端面试中经常会遇到的一个问题.使用index作为key值有什么问题呢? 在我们日常开发中我们经常会和key值打交道. 但是我们扪心自问, 真的理解key吗? 我想大多数朋友可能会有些许犹豫.初学者开发过程中, 可能很难理解key值存在的意义. 我们可以简单把它理解为每一条数据的唯一标识. 它与这条数据是关联在一起的. 能理解到这个地方就足够了.那么为什么不建议使用index作为key值呢?如图所示:上面这个列表我们使用下标 (index) ...原创 2020-06-11 10:13:13 · 8205 阅读 · 1 评论 -
react组件间通信
一、父组件向子组件通信React 数据流动是单向的,父组件向子组件的 通信也是最常见的方式。父组件通过 props 向子组件传递需要的信息function EmailInput(props) { return ( <label> Email: <input value={props.email} /> </label> );}const element = <EmailInput email="123124132@原创 2020-06-11 10:05:38 · 308 阅读 · 0 评论 -
Ant Design的安装
首先我们采用React的脚手架搭建一个项目:create-react-app my-app //创建项目cd my-app //进入目录npm i redux -S //安装reduxnpm i react-redux -S //安装reduxnpm i redux-thunk -原创 2020-06-01 10:55:05 · 3078 阅读 · 0 评论 -
react有状态组件和无状态组件和生命周期函数
有状态组件1.继承自Component类2.可以使用state和props,并且都是使用this来调用this.state或this.props3.拥有生命周期函数无状态组件1.就是一个函数2.不能使用state,只会接收一个props形参,并且直接使用props参数不需要this3.没有生命周期函数生命周期函数1.constructor是es6中的构造函数,在该函数中可以调用当前组建的父级采用super(props),也可以设置state状态(或者说是初始化state的状态,原创 2020-06-01 10:54:15 · 1160 阅读 · 0 评论 -
react路由的使用
react里面的路由使用react-router-dom安装 npm i -S react-router-dom引入 在项目的App.js或者index.js中引入BrowserRouter as Router表示使用Router就是使用BrowserRouter <Route exact path="/" component={Landing} />exact表示指定path只有在访问'/'的时候才展示component={Landing}里面的组件,这个属性可选择性使用原创 2020-06-01 10:53:45 · 235 阅读 · 0 评论 -
taro图片上传组件(单张)兼容h5和weapp
uploadfileComponent// 上传佐证组件代码import Taro, { Component } from '@tarojs/taro'import { connect } from '@tarojs/redux'import { View, Input, Image, Text } from '@tarojs/components'import { AtIcon, AtProgress } from 'taro-ui'import _ from 'lodash'imp原创 2020-06-01 10:50:22 · 3164 阅读 · 1 评论 -
react+umi框架相关
createContext Provider, Consumer多层组件嵌套传值的实现参考 react.Fragment相当于空的<></>不在网页中显示为DOM,但是可以添加给他添加key值 memoizeOne方法,用来优化性能,防止每一次父组件的state或props的值没有改变时,子组件重新render A library which only remembers the latest invocation react-document-titlereact是单页面应用原创 2020-06-01 10:45:49 · 482 阅读 · 0 评论 -
5个技巧助你编写更好的React代码
在本文中,我想分享几个技巧,这些技巧将改善你的React代码。1. 解构 props在 JS 中解构对象(尤其是 props)可以大大减少代码中的重复。看下面的例子://Parent Componentimport React from 'react';import CoffeeCard from './CoffeeCard';const CafeMenu = () => { const coffeeList = [ { id:原创 2020-05-28 10:16:13 · 305 阅读 · 0 评论 -
React中Fetch之cors跨域请求的使用
项目中使用了react,当中需要使用fetch来代替ajax。由于react的create_react_app工具很方便,基本上开箱即用,经过创建项目,输入npm start命令后,便自动监听一个3000的端口,到此前端部分就绪。后端部分我使用了phalcon。由于前后端分离,为了方便,我尝试在nginx中使之同域(前端和后台api的顶级域名相同),但phalcon框架是单入口、react监听3000时候,通过nginx反向代理,出现js找不到的问题,于是放弃同域的打算。因此我配置...原创 2020-05-13 10:11:45 · 2597 阅读 · 0 评论 -
react和vue有哪些不同,说说你对这两个框架的看法
1、React严格上只针对MVC的view层,Vue则是完全的MVVM模式。2、虚拟 DOM不一样 vue会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树.而React,每当应用的状态被改变时,全部组件都会重新渲染。3、组件写法不一样 React推荐的做法是 JSX + inline style, 也就是把HTML和CSS全都写进JavaScript了,即'all in js'; Vue推...原创 2020-04-22 10:17:01 · 407 阅读 · 0 评论 -
React创建组件的三种方式及其区别是什么?
1、无状态函数式组件它是为了创建纯展示组件,这种组件只负责根据传入的props来展示,不涉及到state状态的操作组件不会被实例化,整体渲染性能得到提升,不能访问this对象,不能访问生命周期的方法2、ES5 原生方式 React.createClass // RFCReact.createClass会自绑定函数方法,导致不必要的性能开销,增加代码过时的可能性。3、E6继承形式...原创 2020-04-20 09:56:54 · 958 阅读 · 0 评论 -
对React生命周期的理解
react的生命周期分为三个阶段,分别是mount, update, unmount1. 装载阶段在老的版本里面,会有getDefaultProps和getInitialState两个方法 在新的版本里面,我们直接在constructor里面去初始化state, 用静态方法defaultProps初始化默认的props 接下来就会走到componentWillMo...原创 2020-04-22 10:18:02 · 189 阅读 · 0 评论