组件与props简解
一、创建组件
1.函数式创建
特点:
- 组件不能访问this对象
- 组件无法访问生命周期的方法
- 无状态组件只能访问输入的props,无副作用
function Title() {
return <h2>新闻列表</h2>;
}
2.继承component类来创建组件 (一般我们用继承React.Component类的方式来创建组件)
特点:
- 组件能访问this对象
- 组件有访问生命周期的方法
- 有组件状态state
class Title extends React.Component{
constructor(props){
super(props);
}
render() {
return <h2>新闻列表</h2>;
}
}
二、组件渲染
单闭合调用(只能传props的值)
<Title /> 双闭合调用 (标签内还可以写子标签)
<Title></Title>
<Title>hello word</Title>
在组件内可以通过this.props.children获取, 或者通过React.Children.map(this.props.children, item=>{returm <div>{item}</div>})
三.属性
调取组件的时候,传递给组件的信息(render渲染的时候会把props传递给组件,props就是属性)
作用:让组件丰富化(传递不同的属性控制组件展示不同的效果)
特点:传递进来的属性在组件内部不能修改,也就是它是“只读的”。(修改属性的值,只能重新调取组件并且重新传递值)
虽然不可以修改属性值,但是在类创建组件的方式中,我们可以给组件设置默认值和设置一些规则。
import React from 'react';
import PropTypes from 'prop-types'; //使用 PropTypes 进行类型检查
class Say extends React.Component{
//设置默认值
static defaultProps = {
title: 'hello word'
}
//设置默认规则
static propTypes = {
title: PropTypes.string,
num: PropTypes.number.isRequired
}
constructor(props){
//当super中没有传入props时
/**
* 1.在调用组件开始执行constructor,参数props是传递进来的属性信息(而且是经过defaultProps和propTypes等处理过的)
* 2.但是此时还没有挂载到实例上,所以this.props的结果是undefined
* 3.constructor结束后,挂载就完成了,所以其它生命周期函数中是可以基于this.props来获取属性的
*/
// super();
// console.log(props, this.props) //{title: "two", num: 20} undefined
//当super中传入props时
/**
* 会在当前实例上挂载很多私有属性
* this.props = props;
* this.context = context;
* this.refs = {};
* 现在不这样处理,当constructor执行完成,react也会帮我们给实例挂载这些属性
*/
super(props); //call继承:React.Component.call(this)
console.log(props, this.props) //{title: "two", num: 20} {title: "two", num: 20}
//实例上还可以调取Component类的两个方法
/**
* this.setState()
* this.forceUpdate()
*/
}
render() {
return (
<p>{this.props.title}</p>
)
}
}
// Say.propTypes = {
// title: PropTypes.string
// }
export default Say;
<Say title={'two'} num={20}></Say>
组件与props简解的更多相关文章
- React Native组件、生命周期及属性传值props详解
创建组件的三种方式 第一种:通过ES6的方式创建 /** * 方式一 :ES6 */ export default class HelloComponent extends Component { r ...
- 【react】利用prop-types第三方库对组件的props中的变量进行类型检测
1.引言--JavaScript就是一个熊孩子 1.1对于JSer们来说,js是自由的,但同时又有许多让人烦恼的地方.javascript很多时候就是这么一个熊孩子,他很多时候并不会像C和java ...
- React 精要面试题讲解(二) 组件间通信详解
单向数据流与组件间通信 上文我们已经讲述过,react 单向数据流的原理和简单模拟实现.结合上文中的代码,我们来进行这节面试题的讲解: react中的组件间通信. 那么,首先我们把看上文中的原生js代 ...
- 在vue中子组件修改props引发的对js深拷贝和浅拷贝的思考
不管是react还是vue,父级组件与子组件的通信都是通过props来实现的,在vue中父组件的props遵循的是单向数据流,用官方的话说就是,父级的props的更新会向下流动到子组件中,反之则不行. ...
- React—组件生命周期详解
React—组件生命周期详解 转自 明明的博客 http://blog.csdn.net/slandove/article/details/50748473 (非原创) 版权声明:转载请注明出处,欢 ...
- Vue组件通信方式全面详解
vue组件通信方式全面详解 众所周知,Vue主要思想就是组件化开发.因为,在实际的项目开发中,肯定会以组件的开发模式进行.形如页面和页面之间需要通信一样,Vue 组件和组件之间肯定也需要互通有无.共享 ...
- python ConfigParser、shutil、subprocess、ElementTree模块简解
ConfigParser 模块 一.ConfigParser简介ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.section 下面为类 ...
- vc中调用Com组件的方法详解
vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口: IGetRes--方法Hello(), IGet ...
- Vue组件选项props
前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过 props ...
随机推荐
- Hive高阶聚合函数 GROUPING SETS、Cube、Rollup
-- GROUPING SETS作为GROUP BY的子句,允许开发人员在GROUP BY语句后面指定多个统计选项,可以简单理解为多条group by语句通过union all把查询结果聚合起来结合起 ...
- bert 硬件要求
https://github.com/google-research/bert BERT ***** New May 31st, 2019: Whole Word Masking Models *** ...
- Android Studio(六):Android Studio添加注释模板
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
- oracle用索引提高效率
索引是表的一个概念部分,用来提高检索数据的效率. 实际上,ORACLE使用了一个复杂的自平衡B-tree结构. 通常,通过索引查询数据比全表扫描要快. 当ORACLE找出执行查询和Update语句的最 ...
- hdu 1556 Color the ball(区间更新,单点求值)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 机器学习降维方法概括, LASSO参数缩减、主成分分析PCA、小波分析、线性判别LDA、拉普拉斯映射、深度学习SparseAutoEncoder、矩阵奇异值分解SVD、LLE局部线性嵌入、Isomap等距映射
机器学习降维方法概括 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014772862/article/details/52335970 最近 ...
- Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow pip命令
引言: Tensorflow大名鼎鼎,这里不再赘述其为何物.这里讲描述在安装python包的时候碰到的“No matching distribution found for tensorflow”,其 ...
- tensorflow在文本处理中的使用——skip-gram & CBOW原理总结
摘自:http://www.cnblogs.com/pinard/p/7160330.html 先看下列三篇,再理解此篇会更容易些(个人意见) skip-gram,CBOW,Word2Vec 词向量基 ...
- dotnet 通过 HttpClient 下载文件同时报告进度的方法
本文告诉大家一个简单的方法通过 HttpClient 下载文件,同时报告下载进度 通过 HttpClient 的 ContentLength 很多时候都可以拿到下载的内容的长度,通过 ReadAsyn ...
- [Linux] 使用awk比较两个文件的内容
当需要比较A , B两个文件 , A文件中存在 , 并且把也在B文件中存在的行去除掉 , 可以使用这个awk的用法来 awk '{if(ARGIND==1) {val[$0]}else{if($0 ...