3.1.1 • Published 3 years ago

@hi-ui/genuine-theme v3.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

使用

npm i @hi-ui/genuine-theme --save
// or
yarn add @hi-ui/genuine-theme
import Theme from '@hi-ui/genuine-theme'

render(<Theme />, document.getElementById('app'))

示例

基于配置化实现主题布局和菜单匹配,数组中元素的层级即代表其在菜单中的层级

import React, { Component } from 'react'
import { Theme } from '@hi-ui/genuine-theme'
import { Link } from 'react-router-dom'
import { Input, Icon } from '@hi-ui/hiui'

const Mi = () => <div>小米手机</div>
const RedMi = () => <div>红米手机</div>
const BlackShark = () => <div>黑鲨手机</div>
const TV = () => <div>小米电视</div>
const SoundBox = () => (
  <div>
    小米音响<Link to='/robot-detail/1?b=1'>去详情页</Link>
  </div>
)
const Robot = () => <div>米家扫地机器人</div>
const RobotDetail = () => <div>米家扫地机器人详情页</div>

const routeConfig = [
  {
    name: '手机',
    children: [
      { name: '小米', path: '/mi', component: Mi },
      { name: '红米', path: '/red-mi', component: RedMi, withoutLayout: true },
      { name: '黑鲨', path: '/black-shark', component: BlackShark }
    ]
  },
  { name: '电视', path: '/tv', component: TV },
  {
    name: '智能硬件',
    children: [
      { name: '音响', path: '/audio', component: SoundBox },
      { name: '扫地机器人', path: '/robot', component: Robot },
      { path: '/robot-detail/:id', component: RobotDetail }
    ]
  }
]

const logoConfig = {
  logoUrl: 'https://xiaomi.github.io/hiui/static/img/logo.png?241e0618fe55d933c280e38954edea05',
  name: 'HIUI Theme',
  url: 'https://xiaomi.github.io/hiui/#/'
}

const loginConfig = {
  name: 'Mi Guest',
  icon: 'user',
  children: [
    <div key='1' style={{ textAlign: 'center', margin: 4, width: '100px' }}>
      <a href='#info'>个人信息</a>
    </div>,
    <div key='2' style={{ textAlign: 'center', margin: 4, width: 100 }}>
      <a href='#logout'>注销</a>
    </div>
  ]
}
const toolbar = [<Input key='1' />, <Icon key='2' name='prompt' />]

class App extends Component {
  render() {
    return <Theme routes={routeConfig} logo={logoConfig} login={loginConfig} toolbar={toolbar} />
  }
}

export default App

关于路由跳转

组件内

使用 react-router <Link /> 即可

API 跳转

内部对 react-router 的 history 进行了封装

import Theme, {History} from '@hi-ui/genuine-theme'

History[`${your history type}`].push()

详细使用可参考 react-router 官网

API

Theme

属性名描述类型默认值
type主题类型'classic' | 'genuine'
'classic'
dynamic开启动态布局boolean
true
routes路由配置项Route[]-
logo系统 logoReactNode-
login系统登录配置项ReactNode-
historyType路由跳转类型'hashHistory' | 'browserHistory''browserHistory'
headergenuine 类型下的顶部功能栏ReactNode | null不传时默认为主题自带 header
apperance主题外观配置项Apperance{color:'dark'}
logo主题 logo 配置项Logo | (toggle: boolean) => Logo-
login主题登录信息配置项Login-
toolbar顶部工具栏,一般用于放置通知、全局搜索等ReactNode-
pageHeader自定义页头(selectedMenus: Route [], location: Location) => ReactNode-
defaultExpandAll是否默认展开侧边栏菜单booleanfalse
siderTopRender侧边栏自定义顶部渲染区域(toggle: boolean) => ReactNode-
siderBottomRender侧边栏自定义底部渲染区域(toggle: boolean) => ReactNode-
accordion左侧菜单是否采用手风琴模式booleantrue
basename路由基础路径string'/'
authority用户拥有权限配置string[]-
fallback路由无法匹配时的候补跳转string-
onToggle侧边栏展开收起触发的回调mini: boolean => void-

type: Route

属性名描述类型默认值
name菜单名称string-
icon菜单 iconstring-
children子菜单配置项Route[]-
path菜单跳转路径string-
exact菜单跳转路径是否严格匹配对应的 componentbooleantrue
component菜单对应页面组件ReactNode-
withoutLayout页面组件渲染时,不显示顶部导航栏和侧边栏booleanfalse
extraData向路由匹配的页面组件注入额外的数据object-
authority允许访问该路由的权限string[]-

type: Apperance

属性名描述类型默认值
color主题颜色'dark' | 'light''dark'
contentBackground内容区域背景色string'#f6f6f6'
contentPadding内容区域内边距number0

tye: Logo

属性名描述类型默认值
name系统名称string-
logoUrllogo 图片地址string-
url点击 logo 跳转地址string-

type: Login

属性名描述类型默认值
name登录用户姓名string-
icon登录用户 iconstring-
children登录菜单项ReactNode[]-