美文网首页react
react反向继承注意点

react反向继承注意点

作者: 你的时间非常值钱 | 来源:发表于2019-03-13 14:28 被阅读0次

react高阶组件有一种实现方式叫反向继承(Inheritance Inversion),简称II

案例.png
场景:需要开发一堆有相同特性的按钮组件,相同特性包括内容初始值为零,每次点击后自增1,使用反向继承看看

在线代码地址

class Button1 extends Component {
  componentDidMount() {
    console.log("didMount1");
  }
  render() {
    console.log("render1");
    return <button />;
  }
}
// 高阶组件函数
const Hoc = WrappedComponent => {
  return class extends WrappedComponent {
    state = {
      num: 0
    };
    componentDidMount() {
      console.log("didMountHoc");
    }
    handleClick = () => {
      this.setState({
        num: this.state.num + 1
      });
    };
    render() {
      console.log("renderHoc");
      // 核心代码
      let renderTree = super.render();
      let newProps = {
        ...renderTree.props,
        onClick: this.handleClick
      };
      const newRenderTree = React.cloneElement(
        renderTree,
        newProps,
        this.state.num
      );
      return newRenderTree;
    }
  };
};

反向继承两大作用,一是渲染劫持,二是操作state

看看控制台,发现Button1(被包裹组件)的componentDidMount没触发,发现被Hoc的相同方法覆盖了


生命周期被覆盖.png

处理方法就是不出现同名方法(生命周期),或者手动super[function]调用被包裹组件的方法


手动覆盖.png

注意state,props也会覆盖的

state被覆盖.png

相关文章

  • react反向继承注意点

    react高阶组件有一种实现方式叫反向继承(Inheritance Inversion),简称II 场景:需要开发...

  • react 继承组件的时候注意点

    当写一个继承组件的时候,如果我们自己的继承组件有render() 方法, 在其他的地方使用的时候就无需在写rend...

  • 浅谈 react高阶组件-反向继承

    1. 前言 1.不废话,书接上文react-高阶组件参数[https://www.jianshu.com/p/00...

  • 高阶函数 - React 中反向继承的应用

    阅读这篇文章之前,可以先拜读一下这篇文章 React 进阶之高阶组件 了解一下高阶组件的概念及几种使用方式。 高阶...

  • react中装饰器的应用(反向继承)

    定义一个loading组件在app组件加上 @loading 装饰器app组件 就继承了 loading 组件的方法

  • React注意点总结

    最初使用React时,没有太注意细节,只是会使用,实现功能,当使用一段时间再回过头来看官方文档时发现有些东西原来是...

  • React 的注意点

    1.jsx写HTML代码的时候,如果是html标签首字母必须是小写2.如果是组件,首字母必须大写3.class和f...

  • JS 继承

    用过 React的读者知道,经常用 extends继承 React.Component: React github...

  • Taro开发注意点

    taro 开发注意点: 注意点原因 如果要支持 React Native 端,必须采用 Flex 布局,并且样式选...

  • react学习(9)类式组件

    知识点 首先声明的组件类需要继承React.Component这个react的内置类。同时需要写一个render函...

网友评论

    本文标题:react反向继承注意点

    本文链接:https://www.haomeiwen.com/subject/dikzpqtx.html