React组件属性/方法/库属性
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.string.isRequired
}
render() {
return(
<div>{this.props.name}</div>
)
}
}
在组件(class组件和函数组件都适用)外部:
class App extends React.Component {
render() {
return(
<div>{this.props.name}</div>
)
}
}
App.propTypes = {
name: PropTypes.string.isRequired
}
// 函数组件
function App(props){
return(
<div>{props.name}</div>
)
}
App.propTypes = {
name: PropTypes.string.isRequired
}
2.defaultProps
组件的属性。用于给props属性赋初始值, 当属性值为undefined时生效,null不生效。
既可以在组件内部也可以在组件外部。
运行在propTypes类型检查前。
function App(props){
return(
<div>{props.name}</div>
)
}
App.defaultProps = {
name: "lyra"
}
ReactDOM.render(<App name={undefined} />, window.root)
3. displayName
用于React Devtools中显示组件的名称。
函数组件和类组件都可以使用。主要在高阶组件时比较有用。
function withSubscription(WrappedComponent) {
class WithSubscription extends React.Component {/* ... */}
WithSubscription.displayName = `WithSubscription(${getDisplayName(WrappedComponent)})`;
return WithSubscription;
}
4. getDerivedStateFromError(V16.6.0)
类组件的静态方法。用于捕获错误。
static getDerivedStateFromError(error)
同componentDidCatch,捕获子组件抛出的异常。不能捕获自身的异常。
和getDerivedStateFromProps类似,它返回一个state对象,用于下次渲染时展示降级UI,而不是崩溃的组件树。
import React from 'react'; class ErrorBoundary extends React.Component {
state = {
hasError: false
}
// getDerivedStateFromError在“渲染阶段”就会调用;
// 不能出现副作用;如果需要,可以使用componentDidCatch
static getDerivedStateFromError(error) {
return {
hasError: true
}
}
render() {
if (this.state.hasError) {
return <h2>降级UI</h2>
}
return this.props.children;
}
}
PS: 和该方法类似的有componentDidCatch
componentDidCatch(error, info)
// error是错误信息
// info是调用栈信息 info.componentStack
不同点是: componentDidCatch方法中可以执行副作用。如向服务器发送错误日志等。
export default class ErrorBoundary extends React.Component {
state = {
hasError: false
}
static getDerivedStateFromError(error) {
return {
hasError: true
}
}
componentDidCatch(error, info) {
logToServer(info.componentStack)
}
render() {
if (this.state.hasError) {
return <h2>降级UI</h2>
}
return this.props.children;
}
}
5. contextType
组件设置了该属性后,可以通过this.context访问context对象的值。
import {ThemeContext} from './theme-context'; class ThemedButton extends React.Component {
static contextType = ThemeContext;
render() {
let props = this.props;
let theme = this.context; //最近的Provider提供的值
return (
<button
{...props}
style={{backgroundColor: theme.background}}
/>
);
}
} export default ThemedButton;
React组件属性/方法/库属性的更多相关文章
- vue组件之间的通信以及如何在父组件中调用子组件的方法和属性
在Vue中组件实例之间的作用域是孤立的,以为不能直接在子组件上引用父组件的数据,同时父组件也不能直接使用子组件的数据 一.父组件利用props往子组件传输数据 父组件: <div> < ...
- List的方法和属性 方法或属性 作用
List的方法和属性 方法或属性 作用 Capacity 用于获取或设置List可容纳元素的数量.当数量超过容量时,这个值会自动增长.您可以设置这个值以减少容量,也可以调用trin()方法来减少容量以 ...
- React组件实现越级传递属性
如果有这样一个结构:三级嵌套,分别是:一级父组件.二级子组件.三级孙子组件,且前者包含后者,结构如图: 如果把一个属性,比如color,从一级传递给三级,一般做法是使用props逐一向下传递,代码如下 ...
- React组件和生命周期简介
React 简介----React 是 Facebook 出品的一套颠覆式的前端开发类库.为什么说它是颠覆式的呢? 内存维护虚拟 DOM 对于传统的 DOM 维护,我们的步骤可能是:1.初始化 ...
- React-Native的基本控件属性方法
对React-Native的学习,从熟悉基本控件开始. View 属性方法 序号 名称 属性Or方法 类型 说明 1 accessibilityLabel 属性 string 2 accessib ...
- React-Native的基本控件属性方法,对React-Native的学习,从熟悉基本控件开始。
对React-Native的学习,从熟悉基本控件开始. View 属性方法 序号 名称 属性Or方法 类型 说明 1 accessibilityLabel 属性 string 2 accessib ...
- Python 小知识点(6)--静态方法、类方法、属性方法
(1)静态方法-->-@staticmethod装饰类中方法 只是名义上归类管理, 实际上在静态方法里访问不了类或实例中的任何属性 class Dog(object): def __init__ ...
- Python类(六)-静态方法、类方法、属性方法
静态方法 通过@staticmethod来定义,静态方法在类中,但在静态方法里访问不了类和实例中的属性,但静态方法需要类来调用 # -*- coding:utf-8 -*- __author__ = ...
- Python的程序结构[1] -> 方法/Method[1] -> 静态方法、类方法和属性方法
静态方法.类方法和属性方法 在 Python 中有三种常用的方法装饰器,可以使普通的类实例方法变成带有特殊功能的方法,分别是静态方法.类方法和属性方法. 静态方法 / Static Method 在 ...
随机推荐
- Linux和Windows系统目录结构区别
Windows目录结构图 Linux目录结构图 我们所有的操作尽量都要在/home/username目录下进行. 快捷进入家目录方式是cd ~.
- JVM内存管理(一)--GC简介
GC策略解决了哪些问题? 既然是要进行自动GC,那必然会有相应的策略,而这些策略解决了哪些问题呢,粗略的来说,主要有以下几点. 1.哪些对象可以被回收. 2.何时回收 ...
- .NET调用腾讯云API实例
最近项目有用到腾讯云的身份识别接口,话不多说,直接上代码: private void IDCardVerification(HttpContext context) { string imgStr = ...
- php 5.6.36 安装mcrypt
相关扩展安装步骤 libmcrypt downloadUrl:https://sourceforge.net/projects/mcrypt/files/MCrypt/ versionCode:2.5 ...
- python绘图之turtle库函数的用法
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...
- .gitignore文件的写法
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files .... 解决的方法就是在gi ...
- Django一对一查询,列类型及参数
一对一查询 表的创建 # 通过 OneToOneField 创建一对一的关系 from django.db import models # Create your models here. class ...
- What is Verbose Garbage Collection (verbosegc) and How do I Enable it on WebLogic
问题描述: What is Verbose Garbage Collection (verbosegc) and How do I Enable it on WebLogic 问题分析: 通过添加gc ...
- stm32 视频小车
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 ...
- 关于INT_MIN
来自为知笔记(Wiz)