Feedback 反馈

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

安装方法

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

开发指南

何时使用

用户在进行操作行为后(例如:输入、提交),系统对该操作行为内容作出的判断和校验反馈。

  • 成功:用户操作已成功。例如:宝贝发布成功。

  • 提示:需要用户知道采取行动的事件。例如:宝贝即将过期。

  • 错误:用户操作已失效或是需要马上采取行动的问题。例如:宝贝已经失效,提交失败。

API

反馈

参数说明类型默认值
prefix样式类名的品牌前缀String'next-'
className自定义类名String-
style自定义内联样式Object-
type反馈类型可选值:'success', 'error', 'prompt', 'help', 'loading'Enum'success'
shape反馈外观可选值:'inline', 'addon', 'toast'Enum'inline'
size反馈大小可选值:'medium', 'large'Enum'medium'
title标题ReactNode''
children内容ReactNode-
visible是否显示Booleantrue

代码示例

反馈外观

反馈组件通过设置shapeinlineaddontoast,可分别创建有背景,无背景以及弹出的反馈组件,shape默认值为inline

Feedback 反馈 - 图1

查看源码在线预览

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

反馈尺寸

反馈组件通过设置sizemediumlarge,可以分别创建中等尺寸以及大尺寸的反馈组件。

Feedback 反馈 - 图2

查看源码在线预览

  1. import { Feedback, Select } from "@icedesign/base";
  2. const Option = Select.Option;
  3. const types = ["success", "prompt", "error"];
  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="feedback-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. <Feedback key={type} title="title" type={type} size={size}>
  26. Content Content Content Content
  27. </Feedback>
  28. ))}
  29. </div>
  30. );
  31. }
  32. }
  33. ReactDOM.render(<Demo />, mountNode);
  1. .feedback-size-demo .demo-label {
  2. display: inline-block;
  3. vertical-align: top;
  4. height: 28px;
  5. line-height: 28px;
  6. }
  7. .feedback-size-demo .next-feedback {
  8. margin-top: 10px;
  9. }

弹窗便捷方法

可以通过Feedback.toast.successFeedback.toast.promptFeedback.toast.error方法来方便的显示指定类型的反馈弹窗。

Feedback 反馈 - 图3

查看源码在线预览

  1. import { Feedback, Button } from "@icedesign/base";
  2. const Toast = Feedback.toast;
  3. const showSuccess = () => Toast.success("success 快捷调用");
  4. const showPrompt = () => Toast.prompt("prompt 快捷调用");
  5. const showError = () => Toast.error("error 快捷调用");
  6. const showHelp = () => Toast.help("help 快捷调用");
  7. const showLoading = () => Toast.loading("loading 快捷调用");
  8. ReactDOM.render(
  9. <div className="feedback-toast-quick-demo">
  10. <Button onClick={showSuccess}>success 快捷调用</Button>
  11. <Button onClick={showPrompt}>prompt 快捷调用</Button>
  12. <Button onClick={showError}>error 快捷调用</Button>
  13. <Button onClick={showHelp}>help 快捷调用</Button>
  14. <Button onClick={showLoading}>loading 快捷调用</Button>
  15. </div>,
  16. mountNode
  17. );
  1. .feedback-toast-quick-demo .next-btn.next-btn-medium {
  2. margin-right: 10px;
  3. margin-bottom: 10px;
  4. }

弹窗用法

可以通过Feedback.toast.showFeedback.toast.hide方法来方便的显示或隐藏反馈弹窗。

Feedback 反馈 - 图4

查看源码在线预览

  1. import { Feedback, Button } from "@icedesign/base";
  2. const Toast = Feedback.toast;
  3. const show = () => {
  4. Toast.show({
  5. type: "loading",
  6. content: "将在3秒后关闭或手动点击关闭按钮",
  7. afterClose: () => console.log("Closed the toast")
  8. });
  9. };
  10. const hide = () => Toast.hide();
  11. ReactDOM.render(
  12. <div className="feedback-toast-demo">
  13. <Button onClick={show}>显示</Button>
  14. <Button onClick={hide}>关闭</Button>
  15. </div>,
  16. mountNode
  17. );
  1. .feedback-toast-demo .next-btn.next-btn-medium {
  2. margin-right: 10px;
  3. }

反馈类型

反馈组件通过设置typesuccessprompterrorhelploading,可分别创建类型为成功、提示、错误、帮助以及加载中的反馈组件,type默认值为success

Feedback 反馈 - 图5

查看源码在线预览

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

相关区块

Feedback 反馈 - 图6

暂无相关区块