Skip to content

badge 徽章

在右上角展示徽标数字或小红点。 需要注意的是。由于历史原因。该组件的设计并不能嵌套子级内容。它是作为单独组件进行使用的。并且容器组件需要有个相对定位

Props参数

名称类型是否必传默认值描述
valuenumber | string-
maxnumber99展示封顶的数字值

仅当value未数值时生效
offset[number, number?][0,0]设置状态点的位置偏移

[xOffse, yOffset]
dotbooleanfalse不展示数字,只有一个小红点
colorstringcssPrimaryColor颜色(背景颜色)
position'top-left' | 'top-right' | 'bottom-left' | 'bottom-right''top-right'位置
renderValue() => ReactNode-自定义渲染value

示例

tsx
/* eslint-disable no-console */
import { View } from '@tarojs/components'
import MMBadge from '~/components/badge'
import styles from './index.module.less'
import MMPageContainer from '../_components/page-container'
import PageDemoBlock from '../_components/page-demo-block'
import MMSpace from '~/components/space'
import varStyle from '~/components/styles/themes/default.module.less'
import MMIconFont from '~/components/icon-font'
import MMIconFontName from '~/components/icon-font/const'

export default () => {
  return (
    <MMPageContainer title="徽章">
      <PageDemoBlock title="基础使用">
        <MMSpace gap={20}>
          <MMBadge>
            <View className={styles.item} />
          </MMBadge>
          <MMBadge value={10}>
            <View className={styles.item} />
          </MMBadge>
          <MMBadge value="hot">
            <View className={styles.item} />
          </MMBadge>
        </MMSpace>
      </PageDemoBlock>

      <PageDemoBlock title="自定义颜色">
        <MMSpace gap={20}>
          <MMBadge color={varStyle.primaryColor}>
            <View className={styles.item} />
          </MMBadge>
          <MMBadge color={varStyle.primaryColor} value={10}>
            <View className={styles.item} />
          </MMBadge>
          <MMBadge color={varStyle.primaryColor} value="hot">
            <View className={styles.item} />
          </MMBadge>
        </MMSpace>
      </PageDemoBlock>

      <PageDemoBlock title="位置">
        <MMSpace gap={20}>
          <MMBadge value={100} position="top-left">
            <View className={styles.item} />
          </MMBadge>
          <MMBadge value={100}>
            <View className={styles.item} />
          </MMBadge>
          <MMBadge value={100} position="bottom-left">
            <View className={styles.item} />
          </MMBadge>
          <MMBadge value={100} position="bottom-right">
            <View className={styles.item} />
          </MMBadge>
        </MMSpace>
      </PageDemoBlock>

      <PageDemoBlock title="自定义渲染">
        <MMSpace gap={20}>
          <MMBadge renderValue={() => <MMIconFont value={MMIconFontName.Check} size={8} />}>
            <View className={styles.item} />
          </MMBadge>
        </MMSpace>
      </PageDemoBlock>

      <PageDemoBlock title="单独展示">
        <MMSpace gap={20}>
          <MMBadge />
          <MMBadge value={100} />
        </MMSpace>
      </PageDemoBlock>
    </MMPageContainer>
  )
}