React基础-进阶

一、状态提升

定义:当两个组件之间需要共享一个状态(数据)时,我们的做法是把这个状态(变量)定义它们共同的最近的一个父组件中。

二、组合&&继承

组合:它是React官方特别推荐的一种组件化的设计方案。

意义:组合是React封装组件的基础思想,背后的语法基础:props children / render props。

1、封装组件的一般思路(观察--封装--使用)

1、思考当前产品需要复用的一种类型的组件,由哪几个部分组件?(抽象、拆解)

2、把每个“子部分”封装子组件,把每个子组件的多种可能通过props进行控制。

3、把这些子组件,组合成多种不同的结果。(3种header*2种boyd*2种footer=12种结果)

2、简单理解继承实现组件的复用?

class Modal extends PureComponent {}

class DefaultHeaderModel extends Modal {}

class MiniHeaderModal extends Modal {}

class DefaultFooterDefaultHeaderModal extends DefaultHeaderModel {}

class CustomFooterMiniHeaderModal extends MiniHeaderModal {}

为props添加数据类型验证

npm install prop-type

import PropTypes from 'prop-types'

为props属性添加默认值

Modal.defaultProps = { title: '呵呵' }

三、上下文

这是React官方提供的一种在组件树之间自上而下地传递数据的方案

作用:在组件树之间进行数据传输。

特点1:上下文向子组件传递数据可以绕过props,每个组件节点都可以直接访问到上下文。

特点2:数据流自根组件向后代组件传递,只能单向的,即“自上而下”。

工作中:我们很少自己封装上下文。大多情况下,都在使用第三方库(都是依托于上下文实现的),比如react-router、mobx、redux、自定义封装国际化组件库。

在React中如何使用“自定义上下文”?

1、使用React.createContext()创建“上下文组件”

const ThemeContext = React.createContext()

const { Provider, Consumer } = ThemeContext

2、在组件树的任何节点上包裹一个 <Provider value={数据} />

Provider 向组件树中“注入”数据(提供者)

Cunsumer 从组件树中“取出”数据(消费者)

3、在后代组件节点上,使用 contextType属性 或者 使用Consumer使用上下文数据。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容