七、组件的高级用法-组件的组合(children的用法)-高阶组件-封装组件

本文介绍了React中的受控组件概念,解释了受控组件如何通过状态管理和onChange方法实现表单数据的控制。接着探讨了高阶组件,它是接收组件并返回新组件的函数,用于代码复用和抽象。此外,还讲解了在React中如何通过props传递标签,包括直接传递和使用children属性的方式。
摘要由CSDN通过智能技术生成

受控组件

简而言之,就是受到状态state控制的表单,表单的值改变则state值也改变,受控组件必须要搭配onchange方法,否则不能使用

class App extends Component{
  state={
    text:''
  }
  control=(e)=>{
    this.setState({text:e.target.value})
  }
  render(){
    const{text} = this.state;
    return <div>
      <input type="text" value={text} onChange={(e)=>{this.control(e)}}/>
      <p>{text}</p>
    </div>
  }
}
export default App

高阶组件

1 首先回顾一下什么是高阶函数

高阶函数是一个函数,它接收函数作为参数或将函数作为输出返回。

function a( functionName ){
    functionName()
}

function b(){
    console.log('b')
}

 a(b)

// a为一个高阶函数

2 高阶组件

高阶组件是一个组件,它接收组件作为参数,并将组件作为输出返回


class Small extends Component{
  render(){
    return <h1>{this.props.text}</h1>
  }
}

//高阶组件
function High(Group){
  class Height extends Component{
    render(){
      return <div>
              <Group {...this.props}/>
      </div>
    }
  }
  return Height
}
//此时的small 经过进化已经不是原来的Small组件了
Small = High(Small);

class App extends Component{
  state={
    text:'高阶组件'
  }
  render(){
    return <div>
      <Small text={text}/>
    </div>
  }
}

children

在组件传值时,不光可以传递变量,函数,也可以传递标签,通常我们使用两种方式传递标签: 1 通过属性传递标签,子组件接收时使用this.props

class Text extends Component{
  render(){
    return <div>{this.props.hHtml}</div>
  }
}

class App extends Component{
  render(){
    return <div>
        <Text hHtml={<h1>helloworld</h1>}/>
    </div>
  }
}

2 将组件写成双标签,包住要传递的标签,子组件接收时使用this.props.children

class Text extends Component{
  render(){
    return <div>{this.props.children}</div>
  }
}

class App extends Component{
  render(){
    return <div>
        <Text>
            <h1>helloworld</h1>
        </Text>
    </div>
  }
}

无语非说我质量有问题,凑个字数……

无语非说我质量有问题,凑个字数……

无语非说我质量有问题,凑个字数……

无语非说我质量有问题,凑个字数…… 

无语非说我质量有问题,凑个字数……

无语非说我质量有问题,凑个字数……

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值