React组件属性类型(propTypes)校验 Prop 验证 随着应用不断变大,保证组件被正确使用变得非常有用.为此我们引入propTypes.React.PropTypes 提供很多验证器 (validator) 来验证传入数据的有效性.当向 props 传入无效数据时,JavaScript 控制台会抛出警告.注意为了性能考虑,只在开发环境验证 propTypes.下面用例子来说明不同验证器的区别: React.createClass({ propTypes: { // 可以声明 prop…
1. propTypes 用于进行props的类型检查:来自于prop-types库. // V15.5之后 import PropTypes from 'prop-types'; 该方法适用于函数组件和class组件. 如果使用了@babel/plugin-proposal-class-properties插件, 可以直接在组件内部作为静态属性. class App extends React.Component { static propTypes = { name: PropTypes.s…
一.需求 当有传属性name的值时,则显示Hello "name",否则显示Hello World 二.4种方式的代码实现 1.通过三元运算符 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body>…
Prop验证 随着应用不断变大,为了保证组件被正确使用变得越来越重要.为此我们引入propsTypes.React.PropTypes提供很多验证器(valodator)来验证传入的数据的有效性.当向props传入无效数据是,JavaScript控制台会抛出错误.为了性能考虑,只在开发环境验证propsTypes. GroupSelect.defaultProps = {};GroupSelect.propTypes = { name: PropTypes.string, children: P…
1.3.1 React 组件介绍 在 React 中组件是第一元素,是 React 的基础,一个 React 应用就是基于 React 组件的组合而成.前面的 JSX 练习过后,大家应该对 React 组件不陌生了,在这一节我们将温习以及深入学习 React 组件. 1.3.2 创建一个 React 组件 创建一个 React 组件的方法为,调用 React.createClass 方法,传入的参数为一个对象,对象必须定义一个 render 方法,render 方法返回值为组件的渲染结构,也可以…
React组件三大属性之 refs refs属性 1) 组件内的标签都可以定义ref属性来标识自己 a. <input type="text" ref={input => this.msgInput = input}/> b. 回调函数在组件初始化渲染完或卸载时自动调用 2) 在组件中可以通过this.msgInput来得到对应的真实DOM元素 3) 作用: 通过ref获取组件内容特定标签对象, 进行读取其相关数据 事件处理 1) 通过onXxx属性指定组件的事件处理…
React组件三大属性之 props 理解1) 每个组件对象都会有props(properties的简写)属性2) 组件标签的所有属性都保存在props中 作用1) 通过标签属性从组件外向组件内传递变化的数据2) 注意: 组件内部不要修改props数据 编码操作1) 内部读取某个属性值 this.props.propertyName2) 对props中的属性值进行类型限制和必要性限制 Person.propTypes = { name: React.PropTypes.string.isRequ…
React 三大属性state,props,refs以及组件嵌套的应用 该项目实现了一个简单的表单输入添加列表的内容 代码如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hello React!</title> <script src="https://cdn.staticfile.org/react/16.4.0/u…
第十二单元(react路由-使用react-router-dom-认识相关的组件以及组件属性) #课程目标 理解路由的原理及应运 理解react-router-dom以及内置的一些组件 合理应用内置组件及其属性搭建项目路由 #知识点 路由的由来 路由就是指随着浏览器地址栏的变化,展示给用户的页面也不相同.这是从路由的用途上来解释路由是什么的,还有一种说法是:路由就是URL到函数的映射. 1-1. hash => 路由的实现就是基于location.hash来实现的.其实现原理也很简单,locat…
React组件三大属性之state 组件被称为"状态机", 页面的显示是根据组件的state属性的数据来显示 理解1) state是组件对象最重要的属性, 值是对象(可以包含多个数据)2) 组件被称为"状态机", 通过更新组件的state来更新对应的页面显示(重新渲染组件) 编码操作1) 初始化状态: constructor (props) { super(props) this.state = { stateProp1 : value1, stateProp2 :…
上篇博文使用React开发的一些注意要点对React开发的一些重点进行了简单的罗列总结,虽然也提到了React生命周期,但只略微小结,在此单独写篇React生命周期的总结. 在组件的整个生命周期中,随着该组件的props或者state发生改变,其DOM表现也会有相应的变化.一个组件就是一个状态机,对于特定地输入,它总返回一致的输出. 一个React组件的生命周期分为三个部分:初始化(实例化).存在期和销毁时.下图详细列述了 React 组件在整个生命周期中所涉及的方法和行为: 实例化 当组件在客…
此文翻译自这里. 当我刚开始写React的时候,我看过很多写组件的方法.一百篇教程就有一百种写法.虽然React本身已经成熟了,但是如何使用它似乎还没有一个"正确"的方法.所以我(作者)把我们团队这些年来总结的使用React的经验总结在这里.希望这篇文字对你有用,不管你是初学者还是老手. 开始前: 我们使用ES6.ES7语法 如果你不是很清楚展示组件和容器组件的区别,建议您从阅读这篇文章开始 如果您有任何的建议.疑问都清在评论里留言 基于类的组件 现在开发React组件一般都用的是基于…
React 组件间通讯 说 React 组件间通讯之前,我们先来讨论一下 React 组件究竟有多少种层级间的关系.假设我们开发的项目是一个纯 React 的项目,那我们项目应该有如下类似的关系: 父子:Parent 与 Child_1.Child_2.Child_1_1.Child_1_2.Child_2_1 兄弟:Child_1 与 Child_2.Child_1_1 与 Child_2.etc. 针对这些关系,我们将来好好讨论一下这些关系间的通讯方式. (在 React 中,React 组…
这是通过修改项目运行在Google上时的警告,总结的的部分react组件开发规范: (1)编写组件时,一定要写PropTypes,切莫为了省事儿而不写! 如果一个Props不是required,一定在getDefaultProps中设置它: React.PropTypes主要用来验证组件接收到的props是否为正确的数据类型,如果不正确,控制台(console)中就会出现对应的警告(warning). 所以,为了规范我们开发,减少不必要的警告,这个要注意写上,而且保证类型写对. (2)map遍历…
React组件设计 组件分类 展示组件和容器组件 展示组件 容器组件 关注事物的展示 关注事物如何工作 可能包含展示和容器组件,并且一般会有DOM标签和css样式 可能包含展示和容器组件,并且不会有DOM标签和css样式 常常允许通过this.props.children传递 提供数据和行为给容器组件或者展示组件 对第三方没有任何依赖,比如store 或者 flux action 调用flux action 并且提供他们的回调给展示组件 不要指定数据如何加载和变化 作为数据源,通常采用较高阶的组…
    React 简介----React 是 Facebook 出品的一套颠覆式的前端开发类库.为什么说它是颠覆式的呢? 内存维护虚拟 DOM 对于传统的 DOM 维护,我们的步骤可能是:1.初始化DOM结构2.从服务器获取新数据3.使用新数据更新局部DOM4.绑定各种事件 首先,我们操作 DOM 是最昂贵的开销,对于需要反复更新 DOM 的网页,无疑是噩梦.而 React 引入了一个全新的概念:虚拟 DOM.虚拟 DOM 是驻留在内存里的一种特殊的对象类型数据,我们可以理解为这是真实 DOM…
React 组件间通信方式简介 React 组件间通信主要分为以下四种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面对这四种情况分别进行介绍:   父组件向子组件通信 父组件通过 props 和子组件进行通信,子组件得到 props 后进行相应的操作 父组件 App.js:   import React, { Component } from 'react'; import './App.css'; import Child1 from './Child…
react version: 15.4.2 React.Component 组件能够让你将UI拆分为多个独立自治并可重用的部分.在 React 中提供了 React.Component. 概述 React.Component 是一个抽象基类,直接引用 React.Component 无太大意义.反而,我们会用子类来继承它,并至少定义一个 render() 方法. 通常您将使用纯 JavaScript class 来定义一个 React 组件: class Greeting extends Rea…
在这里简要的说一下这些语言新特性对 React 应用的开发有什么影响,这些 ES6+ 特性使得 React 开发更简单更有趣. 类 迄今为止,最能体现我们使用 ES6+ 来编写 React 组件的就是我们选择使用类定义语法.替代了使用 React.createClass 方法来定义一个组件,我们可以定义一个 bonafide ES6 类来扩展 React.Component: ? 1 2 3 4 5 class Photo extends React.Component {   render()…
React组件设计 组件分类 展示组件和容器组件 展示组件 容器组件 关注事物的展示 关注事物如何工作 可能包含展示和容器组件,并且一般会有DOM标签和css样式 可能包含展示和容器组件,并且不会有DOM标签和css样式 常常允许通过this.props.children传递 提供数据和行为给容器组件或者展示组件 对第三方没有任何依赖,比如store 或者 flux action 调用flux action 并且提供他们的回调给展示组件 不要指定数据如何加载和变化 作为数据源,通常采用较高阶的组…
React组件 一.如何创建React组件 方式一:React.createClass 用 React.createClass 构建组件是 React 最传统.也是兼容最好的方法. const Button = React.createClass({ getDefaultProps() { return { color: 'blue', text: 'http://jartto.wang' }; }, render() { const { color, text } = this.props;…
一.ReactDOM.render 都干啥了 我们在写react的时候,最后一步肯定是 ReactDOM.render( <div> <Home name="home"/> </div> , document.getElementById('app') ); 我们上面得知jsx被解析成了虚拟dom对象,我们把一个对象和一个dom传入render方法就得到了我们的页面,好神奇呀,我们开始撸到render方法: const ReactDOM: Objec…
constructor 构造函数,在创建组件的时候调用一次. 例子: class TodoList extends React.Component { constructor(props, context){ super(props) } } getInitialState 在组件挂载之前调用一次.返回值将会作为 this.state 的初始值. 例子 React.createClass({ getInitialState: function() { return {liked: false};…
很多人在写React组件的时候没有太在意React组件的性能,使得React做了很多不必要的render,现在我就说说该怎么来编写搞性能的React组件. 首先我们来看一下下面两个组件 import React, {PureComponent,Component} from "react" import PropTypes from "prop-types" class A extends Component { constructor(props){ super(…
最近使用React的类型检查PropTypes时,遇到错误:TypeError: Cannot read property 'array' of undefined 看了下自己的React版本:    "react": "^16.2.0",google搜了下,原来:react的类型检查PropTypes自React v15.5起已弃用,请使用prop-types使用方法参考: https://doc.react-china.org/docs/typechecking…
React组件设计 组件分类 展示组件和容器组件 展示组件 容器组件 关注事物的展示 关注事物如何工作 可能包含展示和容器组件,并且一般会有DOM标签和css样式 可能包含展示和容器组件,并且不会有DOM标签和css样式 常常允许通过this.props.children传递 提供数据和行为给容器组件或者展示组件 对第三方没有任何依赖,比如store 或者 flux action 调用flux action 并且提供他们的回调给展示组件 不要指定数据如何加载和变化 作为数据源,通常采用较高阶的组…
一.简介 在开发中,属性变量类型的验证,几乎是任何语言都必须关注的问题,因为如果传入的数据类型不对,轻者程序运行仅仅是给出警告⚠️,严重的会直接导致程序中断,APP闪退或者web页面挂掉,这是很严重的bug问题.如我们所知,JavaScript是一种弱类型的语言,这意味着开发者可以随意地修改变量值的数据类型,而且JavaScript虚拟机对此操作并不会产生异议,虽然这种机制大大地提高了编程的灵活性,但是也隐藏了一个极大的crash风险.React组件为此提供了一种声明和验证属性类型的方法,称为自…
1.4.1 组件 React 中组件有自己的生命周期方法,简单理解可以为组件从 出生(实例化) -> 激活 -> 销毁 生命周期 hook.通过这些 hook 方法可以自定义组件的特性. 除此之外,还可以设置一些额外的规格配置. 这些生命周期方法都可以在调用 React.createClass 的参数对象中传入, 我们已经使用过了一些方法: render getInitialState getDefaultProps propTypes 1.4.2 mixins 类型: array mixin…
(中间因为应付各种考试,处理其他事情,隔了好时间没更新,现在终于有时间了,续上!) 本文为React初始体验,因此先不考虑文件如何组织,尽量以最简单的方式让大家了解React其中的原理. 在创建组件(component)之前,大家首先需要了解一些基础知识.有ES6.JSX语法等基础知识的同学请跳过下面一段. ES6是JavaScript的最新标准,里面新增了许多语法方式,甚至出现了“类”的继承方式,我个人暂且把他们理解为新增了许多“语法糖”,这些“语法糖”可能带给老手的是方便,而对于我们这些菜鸟…
React组件的state和props React的数据是自顶向下单向流动的,即从父组件到子组件中,组件的数据存储在props和state中.实际上在任何应用中,数据都是必不可少的,我们需要直接的改变页面上一块的区域来使得视图的刷新,或者间接地改变其他地方的数据,在React中就使用props和state两个属性存储数据. 描述 state的主要作用是用于组件保存.控制.修改自己的可变状态.state在组件内部初始化,可以被组件自身修改,而外部不能访问也不能修改,可以认为state是一个局部的.…