react 高阶组件 hoc动手写

先写一个react-redux

export default connect()(App)
@connect()        //这里用的是装饰器
	export class App extends React.Component{
			render(){}
	}
export const myHoc=()=>{
			return (Wrapped)=>{
					class Hoc extends React.Component{
						render (){
								return <Wrapped {...this.props}>
								}
					}
					return Hoc
			}
}

高阶组件就是函数里隐藏 一个react组件,参数Wrapped就是被装饰的组件

@myHoc()
export class App extends React.Compoent{
		return (){}
}

推论可以改写为

export default myHoc()(app)

所以用来高阶组件后,返回的是一个高阶。

增加props属性

export const myHoc=()=>{
	return (Warpped)=>{
		class Hoc extends React.Component{
			render (){
				return <Wrapped {...this.props} whoAmI="tiutiu">
			}
		}
		return Hoc
	}
}
@myHoc()
export class App extends React.Component{
	render(){
		return <div>{this.props.whoAmI}</div>
	}
}

多个高阶组件

@myHoc()
@yourHoc()
@hisHoc()
@herHoc()
export class App extends React.Componnt{
	render(){
		return <div>{this.props.whoAmI}</div>
	}
}

上面是装饰器的写法。简介,写起来快

可以带参数

@myHoc('tiuitiu2号')
export class App extends React.Component{
	render(){
		return <div>{this.props.whoAmI}</div>
	}
}
export const myHoc=(name)=>{
	return (Warpped)=>{
		class Hoc extends React.Component{
			render(){
				return <Wrapped {...this.props} whoAmI={name}>
			
			}
		}
		return Hoc;
	}
}

这样就可以接收到tiutiu2号了

不带参数
可以少些一层回调来写不带参数的高阶组件

操控原组件
可能需要拿到被装饰组件的state数据或者执行它的方法,那么,要建立一个引用。

当项目中多次用到某个逻辑方法,但是这个方法无法放进util的时候,可以用Hoc。 Hoc最好只做一件事,那样维护方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值