组件的复用
复用相似的功能,复用状态
render-props 模式
// 创建一个新的组件 使用组件时添加一个函数(任意名称)作为值 该函数的返回值作为要渲染的内容<Mouse render={(mouse)=>{}} />class Mouse extends React.Component{state = {a:0}// 事件处理程序handle = () =>{this.setState({a:'新状态'}}render(){// 渲染传入的函数的返回值this.props.render(this.state)}}// children 子节点模式 插槽<Mouse>{mouse=>(<div></div>)}</Mouse>render(){// 渲染传入的函数的返回值this.props.children(this.state)}}
高阶组件 (HOC)
使用包装模式 : 将一个组件封装为一个包装 使用这个组件包裹其他需要使用这个功能的组件
高阶组件是一个函数,接收要包装的组件 返回增强后的组件
这个函数会创建一个类组件 这个组件中提供复用逻辑的代码,通过prop将复用的状态传递给被包装的组件
// 创建函数 使用with开头// 指定参数,参数就是组件 名字以大写字母开头const withXXX = Wrate => {// 创建一个类组件class Mouse extends React.Component{state={a:1}// 渲染参数传递的组件render(){render <Wrate {...this.state}></Wrate>}}// 返回组件return Mouse}// 使用// 调用函数 将要加强的组件作为参数传递withXXX(组件)
