携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第28天
一、展示组件(Presentationalcomponent)和容器组件(Containercomponent)之间不同
展示组件:展示专门通过 props 接受数据回调,并且几乎不会有自身的状态。
容器组件:展示组件或者其他容器组件提供容器和行为;并调用 actions,将其作为回调提供给展示组件,容器组件经常是有状态的。
二、类组件(Classcomponent)和函数式组件(Functionalcomponent)之间不同
类组件:类组件不仅允许你使用更多额外的功能,如组件自身的状态和生命周期钩子,也能使组件直接访问 store 并维持状态。
函数式组件:当组件仅是接收 props,并将组件自身渲染到页面时,该组件就是一个 '无状态组件(stateless component)',可以使用一个纯函数来创建这样的组件。这种组件也被称为哑组件(dumb components)或展示组件。
三、(组件的)状态(state)和属性(props)之间不同
State 是一种数据结构,用于组件挂载时所需数据的默认值。State 可能会随着时间的推移而发生突变,但多数时候是作为用户事件行为的结果。Props(properties 的简写)则是组件的配置。
props 由父组件传递给子组件,并且就子组件而言,props 是不可变的,组件不能改变自身的props,但是可以把其子组件的 props 放在一起(统一管理)。
四、受控组件(controlledcomponent)
在 HTML 中,类似 ,和 这样的表单元素会维护自身的状态,并基于用户的输入来更新,当用户提交表单时,前面提到的元素的值将随表单一起被发送,但在React 中会有些不同,包含表单元素的组件将会在 state 中追踪输入的值,并且每次调用回调函数时,如 onChange 会更新 state,重新渲染组件,一个输入表单元素,它的值通过 React 的这种方式来控制,这样的元素就被称为”受控元素”。
五、高阶组件(higherordercomponent)
高阶组件是一个以组件为参数并返回一个新组件的函数。HOC 运行你重用代码、逻辑和引导抽象,最常见的可能是 Redux 的 connect 函数,除了简单分享工具库和简单的组合,HOC 最好的方式是共享 React 组件之间的行为,如果你发现你在不同的地方写了大量代码来做同一件事时,就应该考虑将代码重构为可重用的 HOC