Skeleton 骨架屏

在需要等待加载内容的位置提供一个占位图形组合。

何时使用

  1. 网络较慢,需要长时间等待加载处理的情况下。
  2. 图文信息内容较多的列表/卡片中。
  3. 只在第一次加载数据的时候使用。
  4. 可以被 Spin 完全代替,但是在可用的场景下可以比 Spin 提供更好的视觉效果和用户体验。

代码演示

复杂的组合

更复杂的组合。

Skeleton骨架屏 - 图1

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { TextArea, Button, DataSet, Skeleton } from 'choerodon-ui/pro';
  4. import { Avatar } from 'choerodon-ui';
  5. function handleDataSetChange({ record, name, value, oldValue }) {
  6. console.log(
  7. '[dataset newValue]',
  8. value,
  9. '[oldValue]',
  10. oldValue,
  11. `[record.get('${name}')]`,
  12. record.get(name),
  13. );
  14. }
  15. class App extends React.Component {
  16. ds = new DataSet({
  17. autoQuery: true,
  18. queryUrl: '/tree.mock',
  19. fields: [
  20. {
  21. name: 'text',
  22. type: 'string',
  23. defaultValue: 'textarea',
  24. },
  25. ],
  26. events: {
  27. update: handleDataSetChange,
  28. },
  29. });
  30. render() {

动画效果

显示动画效果。

Skeleton骨架屏 - 图2

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { DataSet, Tree, Skeleton, Button } from 'choerodon-ui/pro';
  4. function nodeRenderer({ record }) {
  5. return record.get('text');
  6. }
  7. class App extends React.Component {
  8. ds = new DataSet({
  9. primaryKey: 'id',
  10. queryUrl: '/tree.mock',
  11. autoQuery: true,
  12. parentField: 'parentId',
  13. expandField: 'expand',
  14. idField: 'id',
  15. fields: [
  16. { name: 'id', type: 'number' },
  17. { name: 'expand', type: 'boolean' },
  18. { name: 'parentId', type: 'number' },
  19. ],
  20. events: {
  21. select: ({ record, dataSet }) => console.log('select', record, dataSet),
  22. unSelect: ({ record, dataSet }) =>
  23. console.log('unSelect', record, dataSet),
  24. },
  25. });
  26. render() {
  27. return (
  28. <>
  29. <Skeleton
  30. height={200}
  31. paragraph={{
  32. rows: 10,
  33. style: { width: '5rem' },
  34. }}
  35. active
  36. dataSet={this.ds}
  37. skeletonTitle={false}
  38. >
  39. <Tree dataSet={this.ds} checkable renderer={nodeRenderer} />
  40. </Skeleton>
  41. <div style={{ padding: '0.1rem 0 0.1rem 0.25rem' }}>

API

Skeleton

属性说明类型默认值
skeletonTitle是否显示标题占位图,等同于 title 属性booleantrue

更多案列和属性请参考 Skeleton