import React, { useContext, useEffect } from "react" import PropTypes from "prop-types" import classNames from "classnames" import Affix from "../affix" import { detectStickySupport } from "../_util/detectStickySupport" import { LayoutContext } from "./Context" import "./style" const prefix = "adui-layout" export interface IHeaderProps { [key: string]: any /** * 是否固定 */ affixed?: boolean /** * 子节点 */ children?: React.ReactNode /** * 附加类名 */ className?: string } /** * 布局 - 头部 `
` */ const Header: React.FC & { stickable: boolean } = ({ affixed, children, className, ...otherProps }: IHeaderProps) => { const { setHeaderAffixed } = useContext(LayoutContext) useEffect(() => { if (setHeaderAffixed) { setHeaderAffixed(affixed || false) } }, [affixed]) const header = (
{children}
) if (affixed && !Header.stickable) { return {header} } return header } Header.stickable = detectStickySupport() Header.propTypes = { /** * 是否固定 */ affixed: PropTypes.bool, /** * 子节点 */ children: PropTypes.node, /** * 附加类名 */ className: PropTypes.string, } Header.defaultProps = { affixed: false, children: "", className: undefined, } export default Header