Badge 徽标数

如果项目中使用的是 1.x 版本的基础组件(@alifd/next),请在左侧导航顶部切换组件版本。

安装方法

  1. 在命令行中执行以下命令npm install @icedesign/base@latest -S

开发指南

何时使用

在有新消息,讯息时,或者是app/插件/功能模块可以更新,升级时使用这个组件。

API

徽标数

参数说明类型默认值
prefix样式类名的品牌前缀String'next-'
className自定义类名String-
style自定义内连样式Object-
children徽章依托的内容ReactNode-
count展示的数字,大于 overflowCount 时显示为 ${overflowCount}+,为 0 时隐藏Number/String0
overflowCount展示的封顶的数字Number/String99
dot不展示数字,只展示一个小红点Booleanfalse
align徽章显示的位置可选值:'left'Enum-

代码示例

基本

简单的徽章展示。

Badge 徽标数 - 图1

查看源码在线预览

  1. import { Badge } from "@icedesign/base";
  2. ReactDOM.render(
  3. <Badge count={5}>
  4. <a href="#" className="basic-example" />
  5. </Badge>,
  6. mountNode
  7. );
  1. .basic-example {
  2. display: inline-block;
  3. width: 42px;
  4. height: 42px;
  5. border-radius: 50%;
  6. background: #eee;
  7. }

动态

展示动态变化的效果。

Badge 徽标数 - 图2

查看源码在线预览

  1. import { Badge, Button, Icon } from "@icedesign/base";
  2. const ButtonGroup = Button.Group;
  3. class Demo extends React.Component {
  4. constructor(props) {
  5. super(props);
  6. this.state = {
  7. count: 5,
  8. show: true
  9. };
  10. this.increase = this.increase.bind(this);
  11. this.decrease = this.decrease.bind(this);
  12. this.onClick = this.onClick.bind(this);
  13. }
  14. increase() {
  15. const count = this.state.count + 1;
  16. this.setState({ count });
  17. }
  18. decrease() {
  19. let count = this.state.count - 1;
  20. if (count < 0) {
  21. count = 0;
  22. }
  23. this.setState({ count });
  24. }
  25. onClick() {
  26. this.setState({
  27. show: !this.state.show
  28. });
  29. }
  30. render() {
  31. return (
  32. <div>
  33. <div className="change-count">
  34. <Badge count={this.state.count}>
  35. <a href="#" className="head-example" />
  36. </Badge>
  37. <ButtonGroup>
  38. <Button onClick={this.increase}>
  39. <Icon type="add" />
  40. </Button>
  41. <Button onClick={this.decrease}>
  42. <Icon type="subtract" />
  43. </Button>
  44. </ButtonGroup>
  45. </div>
  46. <div>
  47. <Badge dot={this.state.show}>
  48. <a href="#" className="head-example" />
  49. </Badge>
  50. <Button onClick={this.onClick}>切换红点显隐</Button>
  51. </div>
  52. </div>
  53. );
  54. }
  55. }
  56. ReactDOM.render(<Demo />, mountNode);
  1. .next-badge {
  2. margin-right: 16px;
  3. }
  4. .change-count {
  5. margin-bottom: 16px;
  6. }
  7. .head-example {
  8. display: inline-block;
  9. width: 42px;
  10. height: 42px;
  11. border-radius: 50%;
  12. background: #eee;
  13. }

小红点展示在左侧

放在列表前面的小红点。

Badge 徽标数 - 图3

查看源码在线预览

  1. import { Badge } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <ul className="next-badge-list-wrapper">
  5. <li>
  6. <Badge dot align="left">
  7. 列表前面的小圆点
  8. </Badge>
  9. </li>
  10. <li>
  11. <Badge dot align="left">
  12. 列表前面的小圆点
  13. </Badge>
  14. </li>
  15. <li>
  16. <Badge dot align="left">
  17. 列表前面的小圆点
  18. </Badge>
  19. </li>
  20. </ul>
  21. </div>,
  22. mountNode
  23. );

讨嫌的小红点

没有具体的数字。

Badge 徽标数 - 图4

查看源码在线预览

  1. import { Badge, Icon } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <Badge dot>
  5. <Icon type="email" />
  6. </Badge>
  7. <Badge dot>
  8. <a href="#">一个链接</a>
  9. </Badge>
  10. </div>,
  11. mountNode
  12. );
  1. .next-badge {
  2. margin-right: 16px;
  3. }

独立使用

不包裹任何元素即独立使用,可自定样式展示。

Badge 徽标数 - 图5

查看源码在线预览

  1. import { Badge } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <Badge count={25} />
  5. <Badge
  6. count={4}
  7. style={{
  8. backgroundColor: "#fff",
  9. color: "#999",
  10. border: "1px solid #d9d9d9"
  11. }}
  12. />
  13. <Badge count={109} style={{ backgroundColor: "#87d068" }} />
  14. </div>,
  15. mountNode
  16. );
  1. .next-badge {
  2. margin-right: 16px;
  3. }

大数字

超过overflow的数值,会显示${overflow}+,overflow默认值为99

Badge 徽标数 - 图6

查看源码在线预览

  1. import { Badge } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <Badge count={100}>
  5. <a href="#" className="head-example" />
  6. </Badge>
  7. <Badge count={200} overflowCount={199}>
  8. <a href="#" className="head-example" />
  9. </Badge>
  10. </div>,
  11. mountNode
  12. );
  1. .next-badge {
  2. margin-right: 16px;
  3. }
  4. .head-example {
  5. display: inline-block;
  6. width: 42px;
  7. height: 42px;
  8. border-radius: 50%;
  9. background: #eee;
  10. }

相关区块

Badge 徽标数 - 图7

暂无相关区块