不添加 history 时,来回点击 Link 会在控制台报错如下 Warning: Hash history cannot PUSH the same path; a new entry will not be added to the history stack 解决方案是安装使用 history 模块 import createBrowserHistory from "history/createBrowserHistory"; const customHistory = cre…
其他章节请看: 七天接手react项目 系列 react 脚手架创建项目 前面我们一直通过 script 的方式学习 react 基础知识,而真实项目通常是基于脚手架进行开发. 本篇首先通过 react 脚手架创建项目,分析其目录结构,接着编写第一个组件.解决样式覆盖,最后配置代理 proxy 以及通过消息发布与订阅解决兄弟组件之间的通信问题. Tip:我们要接手的 react 项目是:spug_web. 使用 react 脚手架创建项目 react-cli-demo 前面我们学习 vue 脚手…
其他章节请看: 七天接手react项目 系列 react 路由 本篇首先讲解路由原理,接着以一个基础路由示例为起点讲述路由最基础的知识,然后讲解嵌套路由.路由传参,最后讲解路由组件和一般组件的区别,以及编程式导航. Tip:我们要接手的 react 项目是:spug_web. 什么是路由 路由就是根据不同的 url(网址) 返回不同的页面(数据).如果这个工作在后端做(或者说由后端程序员做),就是后端路由:在前端做就是前端路由. 平时总说的 SPA(单页面应用)就是前后端分离的基础上,再加一层前…
React 页面缓存 react 打包项目进行服务端部署后,会发现index.html被浏览器缓存,访问项目url指向的还是上个版本的内容.原理是index.html被缓存后,路由指向和跳转都是旧版的js和css文件,所以会出现react项目更新后,刷新浏览器显示旧版本内容的现象.可以通过强制清除缓存看到新版本页面,但是在发布版本的时候不能要求每个用户去操作清除浏览器的缓存,所以需要在程序中找到解决办法. 1.html 在head标签头添加cache和cache-control <meta ht…
1.安装NodeJS6.0以上自带npm依赖包管理工具 2.webstrom 2019.2 工具 1.在cmd输入node -v就可以看到node的当前版本 2.在输入node进入node环境 3.查看npm版本号:npm -v 4.再次输入npm可以看到下面有哪些包 5.下一个全局安装react -app :install create-react-app yarn -g 6. 下面在webstrom工具中创建React项目引用React所需要的依赖 7.项目构架: 启动项目进行访问:npm …
react全家桶从0到1(最新) 本文从零开始,逐步讲解如何用react全家桶搭建一个完整的react项目.文中针对react.webpack.babel.react-route.redux.redux-saga的核心配置会加以讲解,通过这个项目,可以系统的了解react技术栈的主要知识,避免搭建一次后面就忘记的情况. 从webpack开始 思考一下webpack到底做了什么事情?其实简单来说,就是从入口文件开始,不断寻找依赖,同时为了解析各种不同的文件加载相应的loader,最后生成我们希望的…
生命周期&受控和非受控组件&Dom 元素&Diffing 算法 生命周期 首先回忆一下 vue 中的生命周期: vue 对外提供了生命周期的钩子函数,允许我们在 vue 的各个阶段插入一些我们的逻辑,比如:created.mounted.beforeDestroy等. react 中的生命周期是否也类似?请接着看: 每个组件都包含 "生命周期方法",你可以重写这些方法,以便于在运行过程中特定的阶段执行这些方法 -- react 官网-组件的生命周期 请看一张 r…
1. 确保本机电脑安装了yarn和node: 2. 在需要安装的文件夹目录下输入:create-react-app  +(项目名称): PS:上图使用的软件为webStorm 3. 此时一个简单的react项目就已经创建好了, react 项目目录下的文件的意思: ①. public: 文件夹中是 index.html存放目录,也就是React根页面的所在地 ②. src: 用于存放js文件,也就是项目开发中的主要区域 ③. package.json: 用于记录项目信息,以及外部依赖包的导入信息…
前一段时间做了一个小项目,时间比较紧,就一个人月.最终希望能够通过微信公众号链接启动应用. 项目的业务细节就不多说了,主要是想分享一下做这个项目技术方面的一些经验. 技术选型 参考范围大致三种:AngularJS,Angular,React. 这里可能会有些困惑,AngularJS和Angular不是一个东西吗? 没错,它们是一个东西,但也不是一个东西.好了,废话少说,首先说明一下AngularJS和Angular的区别. 引用官方文档中的一句话 Angular is the name for…
React项目搭建与部署 一,介绍与需求 1.1,介绍 1.1.1,React简介 React 是一个用于构建用户界面的 JAVASCRIPT 库. React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图). React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源. React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它. 1.1.2,React特点 声明式设计:React采用声明范式,…
前言 作为一个前端爱好者来说,都想在react上一试生手,那么在搭建react项目开发时,肯定会有这样或者那样的问题,尤其是对初学者来说,下面就个人在开发过程中遇到的问题总结一下,好在有google帮我解决了各种问题.本人项目的技术栈为react+redux+router+ant ui +webpack. export * from 'x-module'在配置babel-plugin-transform-runtime插件下导致不可用 export * from 'x-moudule'是es6常…
React项目 React项目搭建与部署 一,介绍与需求 1.1,介绍 1.1.1,React简介 React 是一个用于构建用户界面的 JAVASCRIPT 库. React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图). React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源. React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它. 1.1.2,React特点 声明式设计:Reac…
github github-myBlob 从输入URL到页面加载完成的整个过程 首先做 DNS 查询,如果这一步做了智能 DNS 解析的话,会提供访问速度最快的 IP 地址回来 接下来是 TCP 握手,应用层会下发数据给传输层,这里 TCP 协议会指明两端的端口号,然后下发给网络层.网络层中的 IP 协议会确定 IP 地址,并且指示了数据传输中如何跳转路由器.然后包会再被封装到数据链路层的数据帧结构中,最后就是物理层面的传输了 TCP 握手结束后会进行 TLS 握手,然后就开始正式的传输数据(如…
⒈创建React项目 初始化一个React项目(TypeScript环境) ⒉React集成React-Router React项目使用React-Router ⒊React集成Redux Redux是React中的数据状态管理库,通常来讲,它的数据流模型如图所示: 我们先将目光放到UI层.通过UI层触发Action,Action会进入Reducer层中去更新Store中的State(应用状态),最后因为State和UI进行了绑定,UI便会自动更新. React Redux应用和普通React应…
七天接手react项目-起步 背景 假如七天后必须接手一个 react 项目(spug - 一个开源运维平台),而笔者只会 vue,之前没有接触过 react,此刻能做的就是立刻展开一个"7天 react 扫盲活动". react 活动扫盲方针 以读懂 spug 项目为目标 无需对每个知识点深究 功能优先能实现,代码质量无需太苛刻 项目准备 将 spug 克隆到本地: exercise> git clone https://github.com/openspug/spug spu…
前言 或许你当前的项目还没有到应用Redux的程度,但提前了解一下也没有坏处,本文不会安利大家使用Redux 概念 首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与React没有任何关系,其他UI框架也可以使用Redux react-redux React插件,作用:方便在React项目中使用Redux react-thunk 中间件,作用:支持异步action 目录结构 Tips:与Redux无关的目录已省略 |--src |-- store Redux目录…
Hello 小伙伴们,如果觉得本文还不错,记得给个 star , 小伙伴们的 star 是我持续更新的动力!GitHub 地址 React 系列文章代码地址 一 目录 不折腾的前端,和咸鱼有什么区别 目录 一 目录 二 前言 三 安装及初始目录 四 默认支持特性 五 配合 VS Code 调试 六 分析包大小 七 模块引入 CSS 八 Sass 安装及使用 九 添加图片.背景.SVG 十 public 文件夹  10.1 引用静态资源  10.2 Mock 数据 十一 代码打包分割 十二 引用…
Nav logo 120 发现 关注 消息 4 搜索 从零开始搭建一个react项目 96 瘦人假噜噜 2017.04.23 23:29* 字数 6330 阅读 32892评论 31喜欢 36 项目地址 从头开始建立一个React App - 项目基本配置 npm init 生成 package.json 文件. 安装各种需要的依赖: npm install --save react - 安装React. npm install --save react-dom 安装React Dom,这个包是…
简介 在浏览Github的时候是否经常看到这样的CI图标呢? 本文即为介绍如何为基于React的项目配置CircleCI的自动化测试环境 源码在此 本地实现 项目依赖如下: "devDependencies": { "jasmine-core": "^2.4.1", "karma": "^0.13.19", "karma-jasmine": "^0.3.6", &qu…
概念 首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与React没有任何关系,其他UI框架也可以使用Redux react-redux React插件,作用:方便在React项目中使用Redux react-thunk 中间件,作用:支持异步action 目录结构 Tips:与Redux无关的目录已省略 |--src |-- store Redux目录 |-- actions.js |-- index.js |-- reducers.js |-- state.…
DvaJS构建配置React项目与使用 一,介绍与需求分析 1.1,介绍 dva 首先是一个基于redux 和redux-saga的数据流方案,然后为了简化开发体验,dva 还额外内置了react-router 和fetch,所以dva是基于现有应用架构 (redux + react-router + redux-saga 等)的一层轻量封装.是由阿里架构师 sorrycc 带领 team 完成的一套前端框架. 1.2,需求 快速搭建基于react的项目(PC端,移动端). 二,DvaJS构建项…
数据可视化在前端开发中经常会遇到,万恶的图表,有时候总是就差一点,可是怎么也搞不定. 别慌,咱们一起来研究. 引入我就不多说了 npm install echarts 对于基础的可视化组件,我一般采用组件封装的方式来使用echarts 当需要在项目中使用echarts做图表时,可以直接将其封装成一个组件 1 import React, { Component } from 'react'; 2 3 // 引入 ECharts 主模块 4 import echarts from 'echarts/…
前言 在第二小节中,我们讨论了利用TypeScript创建Web项目的实现,在本下节,我们讨论一下如何结合React创建一个具备TypeScript类型的应用项目. 准备 Webpack配置在第二小节项目的基础上做了一些修改, 添加React相关依赖:react.react-dom.@types/react 和@types/react-dom 修改Webpack配置文件 修改webpack.base.config.js,其余文件和第二小节保持一致,修改如下: const HtmlWebpackP…
背景 现在手上在做的 React 项目因为年代久远,用的 Redux,写代码的体验不太好,所以想升级一下引入 dva.以往使用 dva 都是使用 dva-cli 直接生成 dva 项目,或者在使用 ant design pro 的时候使用 umi 直接生成 react + antd + dva 项目,省去了大量配置的成本.但是这些案例都是在项目初期的时候直接引入了 dva,而针对已有的 react 项目,想要升级到 dva,应该如何引入呢?引入 dva 的过程又会遇到哪些问题?花了半天时间升级到…
官网地址:https://react.docschina.org/ 确保本地安装了Node.js node的版本大于8.10    npm的版本大于5.6 1.在本地的某个位置创建一个文件夹,执行以下代码: npx create-react-app my-app(项目名称 可以自定义) 等待...... 创建好项目后,跳转到项目跟目录: cd my-app 然后运行项目: npm start 弹出这个页面代表项目已经创建好了! 如何在html页面中写React代码? <!DOCTYPE html…
React相关 React 是一个采用声明式,高效而且灵活的用来构建用户界面的框架. JSX 本质上来讲,JSX 只是为React.createElement(component, props, ...children)方法提供的语法糖.比如下面的代码: const element = ( <h1 className="greeting"> Hello, world! </h1> ); 编译为: const element = React.createEleme…
最近有个需求,在一个react项目中,实现搜索关键字呈现高亮状态.这个在普通的html文件中还好操作些,在react项目中有点懵逼了,因为react项目中很少操作dom,有点无从下手.但最后还是实现了效果,如下: 首先来看看如何在react中操作dom,广大网友给出两种方案: 一:使用选择器: 1.引入react-dom     import ReactDom from 'react-dom' 2.给react节点设置id或类名等标识     <span id='tip'></span&…
序言 本文会侧重于TypeScript(以下简称TS)在项目中与React的结合使用情况,而非TS的基本概念.关于TS的类型查看可以使用在线TS工具TypeScript游乐场 React元素相关 React元素相关的类型主要包括ReactNode.ReactElement.JSX.Element. ReactNode.表示任意类型的React节点,这是个联合类型,包含情况众多: ReactElement/JSX.从使用表现上来看,可以认为这两者是一致的,属于ReactNode的子集,表示"原生的…
key应该是稳定的,且唯一的,尽量不要用索引作为key 都知道React组件渲染列表时需要为每个列表元素分配一个在列表中独一无二的key,key可以在DOM中的某些元素被增加或删除视乎帮助React识别哪些发生了变化,通常列表数据都会有id字段,习惯用id值作为key,当没有id或其他唯一标识时,也会用序列号索引index作为key,之前并没有觉得用index有什么不好之处,再次看文档发现序列号索引作为key有一些弊端. 如果列表可以重新排序,不建议使用索引作为key,因为会导致渲染变得很慢,如…
其他章节请看: 七天接手react项目 系列 尾篇 前面我们依次学习了 react 基础知识.react 脚手架创建项目.react 路由,已经花费了不少时间,但距离接手 spug_web 项目还有一些困难. package.json 作为项目的核心,从中我们能大概知晓此项目到底用了哪些技术,所以笔者决定从其入手. spug_web/package.json 为什么没有看见 redux,mobx 是什么?antd 是什么,react-app-rewired.@babel/plugin-propo…