Notice 消息提示

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

安装方法

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

开发指南

何时使用

主动出现在页面上的非常态式信息,公告等。它具有一定的时效性,非功能性。

API

消息提示

参数说明类型默认值
prefix样式类名的品牌前缀String'next-'
className自定义类名String-
style自定义内联样式Object-
type提示类型可选值:'prompt', 'warning', 'system'Enum'prompt'
shape外观形状可选值:'standalone', 'addon'Enum'standalone'
size尺寸大小可选值:'medium', 'large'Enum'medium'
title标题ReactNode''
children内容ReactNode-
defaultVisible默认是否显示Booleantrue
visible当前是否显示Boolean-
closable是否可关闭Booleanfalse
onClose关闭时的回调函数签名:Function() => voidFunction() => {}
afterClose关闭后(动画播放完毕)的回调函数签名:Function() => voidFunction() => {}
iconType自定义图标类型,支持Icon列表请参考Icon组件String-
animation是否开启动画Booleantrue

代码示例

组件类型

通过设置typepromptwarningsystem可分别创建普通、警告、系统提示组件,type默认值为prompt。提示组件有三种类型:普通提示、警告提示、系统提示。

Notice 消息提示 - 图1

查看源码在线预览

  1. import { Notice } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <Notice title="title">Content Content Content Content</Notice>
  5. <Notice title="title" type="warning">
  6. Content Content Content Content
  7. </Notice>
  8. <Notice title="title" type="system">
  9. Content Content Content Content
  10. </Notice>
  11. </div>,
  12. mountNode
  13. );
  1. .next-notice {
  2. margin-bottom: 10px;
  3. }

可关闭组件

通过增加closable属性可以控制提示框是否可关闭。

Notice 消息提示 - 图2

查看源码在线预览

  1. import { Notice } from "@icedesign/base";
  2. const onClose = () => console.log("onClose triggered!");
  3. const afterClose = () => console.log("afterClose triggered!");
  4. ReactDOM.render(
  5. <div>
  6. <Notice title="title" closable onClose={onClose} afterClose={afterClose}>
  7. Content Content Content Content
  8. </Notice>
  9. </div>,
  10. mountNode
  11. );

受控显示隐藏

Notice 消息提示 - 图3

查看源码在线预览

  1. import { Notice, Button } from "@icedesign/base";
  2. class Demo extends React.Component {
  3. constructor(props) {
  4. super(props);
  5. this.state = {
  6. visible: true
  7. };
  8. this.handleChange = this.handleChange.bind(this);
  9. this.handleClose = this.handleClose.bind(this);
  10. }
  11. handleChange() {
  12. this.setState({
  13. visible: !this.state.visible
  14. });
  15. }
  16. handleClose() {
  17. this.setState({
  18. visible: false
  19. });
  20. }
  21. render() {
  22. const { visible } = this.state;
  23. return (
  24. <div className="control-demo">
  25. <Button onClick={this.handleChange}>Toggle Visible</Button>
  26. <Notice
  27. type="warning"
  28. visible={visible}
  29. title="警告"
  30. closable
  31. onClose={this.handleClose}
  32. >
  33. 现在不是一个买房的低点,建议慎重考虑。
  34. </Notice>
  35. </div>
  36. );
  37. }
  38. }
  39. ReactDOM.render(<Demo />, mountNode);
  1. .control-demo .next-btn-medium {
  2. margin-bottom: 10px;
  3. }

定制组件外观

Notice 消息提示 - 图4

查看源码在线预览

  1. import { Notice } from "@icedesign/base";
  2. ReactDOM.render(
  3. <Notice
  4. className="custom"
  5. closable
  6. iconType="success"
  7. title={
  8. <span>
  9. 您的 信用保障极速贷款服务申请 已通过,获得信用保障极速贷款总额度:<a
  10. className="redit-lines"
  11. href=""
  12. >
  13. 300000
  14. </a>{" "}
  15. 人民币
  16. </span>
  17. }
  18. />,
  19. mountNode
  20. );
  1. .custom.next-notice.next-notice-prompt.next-notice-standalone {
  2. border-color: #1DC11D;
  3. }
  4. .custom .next-icon-success:before {
  5. color: #1DC11D;
  6. }
  7. .custom .redit-lines {
  8. color: #FF6A00;
  9. }

组件外观

注意,当通知组件的type属性值为system时,无论是否设置组件的外观shape值,组件都表现为有外观。

  • addon 嵌入型,即通知组件会取消边框的显示,用于嵌入在某些内容区域中

  • standalone 默认外观,即提示组件会自带边框提示组件有三种外观,可以通过shape属性设置。

Notice 消息提示 - 图5

查看源码在线预览

  1. import { Notice, Select } from "@icedesign/base";
  2. const Option = Select.Option;
  3. const types = ["prompt", "warning", "system"];
  4. class Demo extends React.Component {
  5. constructor(props) {
  6. super(props);
  7. this.state = {
  8. shape: "standalone"
  9. };
  10. this.handleSelect = this.handleSelect.bind(this);
  11. }
  12. handleSelect(shape) {
  13. this.setState({ shape });
  14. }
  15. render() {
  16. const { shape } = this.state;
  17. return (
  18. <div className="notice-shape-demo">
  19. <span className="demo-label">请选择Shape:</span>
  20. <Select defaultValue="standalone" onChange={this.handleSelect}>
  21. <Option value="standalone">Standalone</Option>
  22. <Option value="addon">Addon</Option>
  23. </Select>
  24. {types.map(type => (
  25. <Notice
  26. key={type}
  27. title="title"
  28. type={type}
  29. shape={shape}
  30. animation={false}
  31. >
  32. Content Content Content Content
  33. </Notice>
  34. ))}
  35. </div>
  36. );
  37. }
  38. }
  39. ReactDOM.render(<Demo />, mountNode);
  1. .notice-shape-demo .demo-label {
  2. display: inline-block;
  3. vertical-align: top;
  4. height: 28px;
  5. line-height: 28px;
  6. }
  7. .notice-shape-demo .next-notice {
  8. margin-top: 10px;
  9. }

组件尺寸

通过设置size属性为mediumlarge可分别创建普通尺寸、大尺寸的提示组件,size默认值为medium。提示组件共有两种尺寸:普通、大型。

Notice 消息提示 - 图6

查看源码在线预览

  1. import { Notice, Select } from "@icedesign/base";
  2. const Option = Select.Option;
  3. const types = ["prompt", "warning", "system"];
  4. class Demo extends React.Component {
  5. constructor(props) {
  6. super(props);
  7. this.state = {
  8. size: "medium"
  9. };
  10. this.handleSelect = this.handleSelect.bind(this);
  11. }
  12. handleSelect(size) {
  13. this.setState({ size });
  14. }
  15. render() {
  16. const { size } = this.state;
  17. return (
  18. <div className="notice-size-demo">
  19. <span className="demo-label">请选择Size:</span>
  20. <Select defaultValue="medium" onChange={this.handleSelect}>
  21. <Option value="medium">Medium</Option>
  22. <Option value="large">Large</Option>
  23. </Select>
  24. {types.map(type => (
  25. <Notice
  26. key={type}
  27. title="title"
  28. type={type}
  29. size={size}
  30. animation={false}
  31. >
  32. Content Content Content Content
  33. </Notice>
  34. ))}
  35. </div>
  36. );
  37. }
  38. }
  39. ReactDOM.render(<Demo />, mountNode);
  1. .notice-size-demo .demo-label {
  2. display: inline-block;
  3. vertical-align: top;
  4. height: 28px;
  5. line-height: 28px;
  6. }
  7. .notice-size-demo .next-notice {
  8. margin-top: 10px;
  9. }

相关区块

Notice 消息提示 - 图7

暂无相关区块