入门react
前言:今天翻到了好久之前学习react时的笔记,拿出来记录一下以免忘掉,里面主要是记录了安装环境,创建项目,启动项目,jsx,组件介绍,组件通信,多层嵌套,路由搭建,路由传参,redux。记录的比较浅薄,但是还是有一点点的帮助,因为自己最近一直在使用vue,所以拿来回忆一下还是不错的,都是比较基础的。
安装
准备 node 版本 8.10 以上 node -v查看node 版本
$ cnpm install -g create-react-app 安装环境
$ create-react-app my-app 创建一个项目,并命名
$ cd my-app/ 进入项目
$ npm start 启动项目
jsx js+xml(标签语法,类似于html)
jsx javascript的拓展语言,完全是javascrip内部实现的
jsx 只能又一个父标签
jsx 可以使用{表达式}
JSX 代码的外面扩上一个小括号
jsx 添加样式 使用className
组件
1、函数组件(无状态组件) 2、类组件(有状态组件)
注意:
组件名称必须以大写字母开头。
组件通信
子传父
子组件 使用this.props.事件名(参数)
父组件 <子组件 事件名={处理函数}>
父组件的处理函数中的参数 就是子组件传递过来的数据
vue
在使用 子组件上自定义一个事件 <ComA :on-show={xxx}/>
子组件中 使用 $emit('on-show',值)
多层嵌套
引入 prop-types
父组件
声明 childContextTypes 进行数据验证
声明 getChildContext 提供数据和方法 供下级组件使用
子组件
声明contextTypes 进行数据验证
在事件中 使用this.context.方法名(上级组件 childContextTypes中声明的方法 )
兄弟
cnpm install events
引入events
、创建 event.js文件
import { EventEmitter } from 'events';
export default new EventEmitter();
导出 emitter对象
A 组件接受数据 使用emitter.addListener(‘changeMessage’) 注册一个事件
B 组件发送数据 使用emitter.emit('changeMessage', '数据'); 、发送数据的组件
引入emitter对象
使用 emitter.emit('changeMessage', 'message'); 通过changeMessage 发送一个数据message 、在接收数据的组件中
引入emitter对象
注册接受函数 使用 emitter.addListener('changeMessage',function(message){ message参数就是传递过来的数据})
children
在组件中获得 使用组件时候在组件中以任何形式(标签元素)传递过来的数据 和slot 很相似
受控组件和非受控组件
受控组件 input中的value值通过state值获取,onChange事件改变state中的value值,input中的value值又从state中获取
非受控 非受控也就意味着我可以不需要设置它的state属性,而通过ref来操作真实的DOM。
路由搭建
引入 react-router-dom 路由核心组件
引入 react-loadable 路由懒加载方式
HashRouter 使用 URL 中的 hash(#)部分去创建形如 example.com/#/some/path 的路由。
BrowserRouter 是使用 React Router 的应用推荐的 history。
它使用浏览器中的 History API 用于处理 URL,创建一个像example.com/some/path这样真实的 URL 。
exact的值为bool型,为true时表示严格匹配,为false时为正常匹配。
路由懒加载
路由懒加载 可用于项目优化 会把项目分包 非路由懒加载打包后就一个资源包。加载很慢
路由懒加载 会按照路由模块进行分包 所以浏览器在加载这些 小资源包的时候会更快。
路由传参数
<Route path='/path/:name' component={Path}/>
<link to="/path/2">xxx</Link>
编程式导航 this.props.history.push({pathname:"/path/" + name});
读取参数用:this.props.match.params.name
this.props.history.goBack() 等同于 this.props.history.go(-)相当于浏览器自带的后退 不写参数 默认后退1级
this.props.history.go() 前进/后退(负数) 相当于浏览器的 前进/后退按钮 参数代表前进/后退几级 go()刷新
this.props.history.goForward() 等同于 this.props.history.go()
this.props.history.location.pathname 代表当前路由地址
嵌套(子)路由
父路由组件中,在定义一个路由规则
redux
cnpm install redux
cnpm install react-redux 什么是redux 数据状态管理:
就是说我们项目中有很多组件需要共享数据,这时候可以使用redux 搭建 :
我一般都会创建3个文件夹。
action 里面我会定义 方法。这个方法用来触发reducers里面的处理逻辑。
因为方法里面 会返回两个字段,一个type 用来表示一个字符串, 还有一个data,就是调用actioni 面的方法时传递的参数 reducer 定义store里面的数据和处理逻辑。
处理逻辑通常使用 switch case 来选择对应的action传递过来的type 类型进行处理 store 里面会导出 reducer 封装好的数据 使用数据:
在 index.js 里面使用 provider 这个组件,将根组件和我们引入的store 联系起来。这样根组件中的所有组件都可以使用redux
在具体的某个组件中,引入 connect 方法,该方法用来将 mapStateToProps mapDispatchToProps 和当前组件关联起来
mapStateToProps 用来引入数据(store) mapDispatchToProps 用来引入 action里面的方法
使用this.props.store的名称 来获取redux里面的数据
使用 this.props.actios的名称 来获取action里面的方法
cookie
语法 document.cookie = 'key=value;exprese='过期时间.toGMTString();'
escape(value) js 编码 unescape() 解码 什么是cookie
它类似于本地存储。
不过存的值比较小 4kb左右,
而且他可以设置过期时间。
接口请求是可以被携带到服务器,
使用场景,7天免登录
就是这么多了,虽然里边不是特别详细,但是拿来回忆一下还是挺不错的,一个最基本的搭建使用流程,不是很完整,但是很简单,哈哈哈哈,就到这了,欢迎补充哦~
入门react的更多相关文章
- 快速入门react
安装react npm install creat-react-app -g这里直接安装react的一个脚手架,里面包含了要用到的许多东西,帮助快速入门react 创建新项目 create-react ...
- webpack入门+react环境配置
小结放在前:这篇文章主要是为下一篇的react提前铺好路,webpack是一个前端资源模块化管理和打包工具,说白了就是方便我们管理自己的常用的一些代码,比如你开发中用到sass以及jade同时用到es ...
- 入门React和Webpack
最近在学习React.js,之前都是直接用最原生的方式去写React代码,发现组织起来特别麻烦,之前听人说用Webpack组织React组件得心应手,就花了点时间学习了一下,收获颇丰 说说React ...
- 轻松入门React和Webpack
最近在学习React.js,之前都是直接用最原生的方式去写React代码,发现组织起来特别麻烦,之前听人说用Webpack组织React组件得心应手,就花了点时间学习了一下,收获颇丰 <!-- ...
- 二手前端入门React项目
个人对ReactJS这门技术比较感兴趣,在基友的帮助下成功创建了一个React标准前端工程,过程中遇到了不少麻烦,今天作为笔记一般记录一下遇到的问题和解决方案. 基础环境 手头一台Mac 使用OSX系 ...
- 一篇文章快速入门React框架
视频教程 本文章在B站配有视频教程 课程目标 了解最常用的React概念和相关术语,例如JSX,组件,属性(Props),状态(state). 构建一个非常简单的React应用程序,以阐述上述概念. ...
- React入门最好的学习实例-TodoList
前言 React 的核心思想是:封装组件,各个组件维护自己的状态和 UI,当状态变更,自动重新渲染整个组件. 最近前端界闹的沸沸扬扬的技术当属react了,加上项目需要等等原因,自己也决定花些时间来好 ...
- React 入门最好的实例-TodoList
React 的核心思想是:封装组件,各个组件维护自己的状态和 UI,当状态变更,自动重新渲染整个组件. 最近前端界闹的沸沸扬扬的技术当属react了,加上项目需要等等原因,自己也决定花些时间来好好认识 ...
- React.js入门笔记 创建hello world 的6种方式
一.ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站. ...
随机推荐
- ElasticSearch Cardinality Aggregation聚合计算的误差
使用ES不久,今天发现生产环境数据异常,其使用的ES版本是2.1.2,其它版本也类似.通过使用ES的HTTP API进行查询,发现得到的数据跟javaClient API 查询得到的数据不一致,于是对 ...
- docker镜像制作必备技能
正文 使用过docker的都知道dockerfile,其用于定义制作镜像的流程,由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像.可参考往期文章学习:docker基础知识整理 ...
- 使用Spring-boot-starter标准改造项目内的RocketMQ客户端组件
一.背景介绍 我们在使用Spring Cloud全家桶构建微服务应用时,经常能看到spring-boot-xxx-starter的依赖,像spring-boot-starter-web.spring- ...
- Python多线程多进程那些事儿看这篇就够了~~
自己以前也写过多线程,发现都是零零碎碎,这篇写写详细点,填一下GIL和Python多线程多进程的坑~ 总结下GIL的坑和python多线程多进程分别应用场景(IO密集.计算密集)以及具体实现的代码模块 ...
- 高精度运算略解 在struct中重载运算符
高精度 高精度,即高精度算法,属于处理大数字的数学计算方法.在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字. 重载运算符 运算符重载,就是对已有的运算符重新进行 ...
- 深入理解Transformer及其源码解读
深度学习广泛应用于各个领域.基于transformer的预训练模型(gpt/bertd等)基本已统治NLP深度学习领域,可见transformer的重要性.本文结合<Attention is a ...
- php分布式是什么
分布式网络存储技术是将数据分散地存储于多台独立的机器设备上.分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但解决了传统集中式存储系统中单存储服务 ...
- JavaScript如何工作:垃圾回收机制 + 常见的4种内存泄漏
原文地址: How JavaScript works: memory management + how to handle 4 common memory leaks 本文永久链接:https://d ...
- 图论-最短路径<Dijkstra,Floyd>
昨天: 图论-概念与记录图的方法 以上是昨天的Blog,有需要者请先阅读完以上再阅读今天的Blog. 可能今天的有点乱,好好理理,认真看完相信你会懂得 分割线 第二天 引子:昨天我们简单讲了讲图的概念 ...
- 使用 App Inventor 2 开发简单的安卓小游戏
App Inventor2 是一个简单的在线开发安卓应用程序的工具,通过此工具,我们可以很轻松地开发安卓应用. 这里介绍的是笔者自己写的一个小游戏,游戏中玩家通过左右倾斜手机控制“水库”的左右移动,收 ...