react 高阶组件如何写,一个高阶组件的小demo
高级组件 higherOrderComponent (HOC)
是个纯函数,接收一个组件,返回一个组件
例子:
效果图

js部份
import React, { Component } from "react";
import "./Blackboard.less";
const defaultParams = {
}
export const Blackboard = (params = defaultParams) => (WrappedComponent) => {
return class HOC extends Component {
render() {
return (
<div className="Blackboard">
<section className="code-box-demo">
<WrappedComponent {...params}/>
</section>
<section className="code-box-meta markdown">
<div className="code-box-title">
<span>高阶组件用法举例</span>
</div>
</section>
</div>
)
}
}
}
less部份
.Blackboard{ border: 1px solid #e9e9e9; border-radius: 6px; display: inline-block; width: 100%; position: relative; margin: 0 0 16px; transition: all .2s ease; &:hover { box-shadow: 0 0 6px rgba(0,0,0,.15); position: relative; z-index: 10; // background: #fff; } .code-box-demo{ width: 100%; border-bottom: 1px solid #e9e9e9; padding: 42px 20px 50px; } .code-box-meta.markdown { position: relative; padding: 17px 16px 15px 20px; border-radius: 0 0 6px 6px; -webkit-transition: background-color .4s ease; transition: background-color .4s ease; width: 100%; font-size: 12px; } .markdown { color: #666; line-height: 1.8; } .code-box-title{ position: absolute; top: -13px; padding: 1px 8px; margin-left: -8px; color: #777; border-radius: 6px; border-top-left-radius: 0; background: #fff; -webkit-transition: background-color .4s ease; transition: background-color .4s ease; } }
使用方式
import React from "react"; import { Blackboard } from "components/Blackboard/Blackboard"; // 引入高阶组件
class YearPicker extends React.Component { constructor(props) { super(props) this.state = { // ... }; } render() { return ( <div> // ... </div> ) } } // 组件导出之前包裹一下 export default Blackboard({})(YearPicker)

浙公网安备 33010602011771号