一. 概述(ES6不支持,需要插件)
1.虽然组件的原则就是模块化,彼此之间相互独立,但是有时候不同的组件之间可能会共用一些功能,共享一部分代码。所以 React 提供了 mixins
这种方式来处理这种问题。
2.Mixin 就是用来定义一些方法,使用这个 mixin 的组件能够自由的使用这些方法(就像在组件中定义的一样),所以 mixin 相当于组件的一个扩展,在 mixin 中也能定义“生命周期”方法。
3.React 的 mixins
的强大之处在于,如果一个组件使用了多个 mixins,其中几个 mixins
定义了相同的“生命周期方法”,这些方法会在组件相应的方法执行完之后按 mixins 指定的数组顺序执行。
二.事例
使用需要引入插件:
安装依赖包 :
npm install --save react-mixin@2
在所有组件间都可以调用同一个log 方法。
1.创建 Minxins.js
const MixinLog{ log(){ console.log("abcd......"); }};export default MixinLog; //暴露出来
2.在bodyindex 中引入 Minxins.js
import react-mixin from 'react-mixin';import MixinLog from './Mixins.js';
3.将方法加入到BodyIndex类中
BodyIndex.propTypes = { userId : React.PropTypes.number.isRequired, //必须参数}BodyIndex.defaultProps = defaultProps; // 默认值ReactMixin(BodyIndex.prototype, MixinLog);
4.调用生命周期函数
const MixinLog = { //调用生命周期函数 componentDidMount(){ console.log("componentDidMount.log"); }, log(){ console.log("abcd......"); }};export default MixinLog; //暴露出来