+ 代理方式的高阶组件
返回的新组件直接继承自React.Component类,新组件扮演的角色传入参数组件的一个代理,在新组件的render函数中,将被包裹组建渲染出来,除了高阶组件自己要做的工作,其余功能全部转手给了被包裹的组建
~~~
// 代理方式的高阶组件
const A = (title) => WrappedComponent => class A extends Component {
_ref(instance) {
instance.getName&&console.log(instance, instance.getName())
}
render() {
const { age, ...otherProps } = this.props
return (
<div className="container">
{title}
<div>
<WrappedComponent sex={'男'} {...otherProps} ref={this._ref.bind(this)} />
</div>
</div>
)
}
}
export {
A
}
~~~
~~~
// 共享高阶组件内的方法和 staate
const A = (title) => WrappedComponent => class A extends Component {
constructor(props) {
super(props);
this.state = {
value: ''
}
}
onInputChange = (e) => {
this.setState({
value: e.target.value
})
console.log(this.state.value)
}
_ref(instance) {
instance.getName&&console.log(instance, instance.getName())
}
render() {
const { age, ...otherProps } = this.props
const newProps = {
value: this.state.value,
onChange: this.onInputChange,
}
return (
<div className="container">
{title}
<div>
<WrappedComponent sex={'男'} {...otherProps} {...newProps} />
</div>
</div>
)
}
}
~~~
+ 继承方式的高阶组件
采用继承关联作为参数的组件和返回的组件,假如传入的组件参数是 WrappedComponent,那么
返回的组件就直接继承自WrappedComponent
- 第一章:react 基础
- 1. 关于 react
- 2. react 工作原理
- 0. 开发环境搭建
- 1. 创建并使用一个组件
- 1. 模块化与组件化
- 2. 虚拟DOM
- 3. Diff 算法
- React 与 Vue 的使用差异
- 1. 组件创建方式
- 2. data 与 state
- 3. 方法使用方式&this
- 4. 数据双向绑定
- 5. props
- 6. ref
- 7. for 循环元素
- 8. 生命周期
- create-react-app 改为多页面应用
- react修改打包路径,直接查看
- redux
- context
- lazy 实现延迟加载静态属性
- Memo实现指定组件进行渲染
- React Hooks
- React Hooks 的概念和意义
- 使用 useState
- axios单次切换formdata和payreload
- react 动态绑定 class
- 高阶组件
- react设计模式