Title

一、什么是高阶组件(Higher-Order Components)?

 高阶函数:至少满足以下条件之一:

  • 接受一个或多个函数作为输入;
  • 输出一个函数;

 高价组件官方定义:高阶组件是参数为组件,返回值为新组件的函数;

     作用:让属性、方法进行继承

 

/* 
    高阶组件

    // 高阶组件的作用 => 让属性进行继承
    // 作用1: 
    // 就是我们在封装组件的时候,发现我封装的这几个组件他们之间有一个属性,是相同的,我写一个高阶组件

    // 语法:就是一个函数,他的参数是是函数,返回值也是函数

    // 组件A, 组件B 这两个组件,他们之间有公共的属性

    // 比如组件A有定义的死的变量 let a=300


*/

import "./App.css";

function App() {
  return (
    <div className="App">
      <h2>高阶组件</h2>
        <NewChildrenA></NewChildrenA>
        <ChildrenB></ChildrenB>
    </div>
  );
}

//定义高阶组件=>本质=》高阶函数=》函数劫持

function HCom(Com) {
  function newf() {
    // 继承公共的属性
    let a = 300;
    const add = () => {
      console.log("添加");
    };
    return <Com a={a} add={add}></Com>;
  }
  return newf;
}


function ChildrenA(props){
  console.log(props,111111111)
  return (
    <div>ChildrenA {props.a}
    <button onClick={()=>props.add()}>添加</button>
    </div>
  )
};

let NewChildrenA=HCom(ChildrenA)


function ChildrenB(){
  let a=300;
  return(
    <div>ChildrenB</div>
  )
}

export default App;

/* 
  总结 高阶组件
    // 他是什么? 他的本质就是一个高阶函数,他的参数是一个函数,他的返回值是一个函数

    // 作用? 1 正向继承 =》 就是我们封装的组件继承 高阶组件上的属性

    // 为什么需要这个高阶组件?就是因为我们写react项目都是进行组件化开发,在某些模块中,我们封装的组件,他们之间可能有一些公共的属性,方便维护,我们就写成一个高阶组件


    // 用法 => 先定义高阶组件,在高阶组件定义公共的属性 => 在用自己封装的组件去继承

*/

 

posted on 2023-02-22 23:33  chccee  阅读(29)  评论(0编辑  收藏  举报