extra & lock column & select
{tableMixExpandedLock}
diff --git a/packages/component/src/components/table/demo/demo27.js b/packages/component/src/components/table/demo/demo27.js
new file mode 100644
index 000000000..c7fa22886
--- /dev/null
+++ b/packages/component/src/components/table/demo/demo27.js
@@ -0,0 +1,151 @@
+import React, { useState, useCallback } from 'react'
+import { Table } from '@alicloud/console-components'
+import styled from 'styled-components'
+
+const data = [
+ {
+ key: 1,
+ name: 'a',
+ age: 32,
+ address: 'aa',
+ children: [
+ {
+ key: 11,
+ name: 'b',
+ age: 33,
+ address: 'bb',
+ },
+ {
+ key: 12,
+ name: 'c',
+ age: 33,
+ address: 'cc',
+ children: [
+ {
+ key: 121,
+ name: 'd',
+ age: 33,
+ address: 'dd',
+ },
+ ],
+ },
+ {
+ key: 13,
+ name: 'e',
+ age: 33,
+ address: 'ee',
+ children: [
+ {
+ key: 131,
+ name: 'f',
+ age: 33,
+ address: 'ff',
+ children: [
+ {
+ key: 1311,
+ name: 'g',
+ age: 33,
+ address: 'gg',
+ },
+ {
+ key: 1312,
+ name: 'h',
+ age: 33,
+ address: 'hh',
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ {
+ key: 2,
+ name: 'i',
+ age: 32,
+ address: 'ii',
+ children: [],
+ },
+]
+
+const generateAllKeys = (dataSource) => {
+ let allKeys = []
+ dataSource.forEach((item) => {
+ allKeys.push(item.key)
+ if (item.children && Array.isArray(item.children)) {
+ allKeys = allKeys.concat(generateAllKeys(item.children))
+ }
+ })
+ return allKeys
+}
+
+const TableMixTree = () => {
+ const [selectedRowKeys, setSelectedRowKeys] = useState([])
+
+ const handleSelectAll = (selected, records) => {
+ if (selected) {
+ const allKeys = generateAllKeys(records)
+ setSelectedRowKeys(allKeys)
+ } else {
+ const keys = records.map((item) => item.key)
+ setSelectedRowKeys(keys)
+ }
+ }
+
+ const handleSelect = useCallback(
+ (selected, record) => {
+ if (selected) {
+ setSelectedRowKeys([record.key, ...selectedRowKeys])
+ } else {
+ // const selectedkeys = [...selectedRowKeys]
+ // const index = selectedkeys.indexOf(record.key)
+ // selectedkeys.splice(index, 1)
+ const selectedKeys = selectedRowKeys.filter(
+ (item) => item !== record.key
+ )
+ setSelectedRowKeys(selectedKeys)
+ }
+ },
+ [selectedRowKeys]
+ )
+
+ return (
+
+ )
+}
+
+const Demo27 = () => (
+
+
+
+)
+
+export default Demo27
+
+export const demoMeta = {
+ zhName: `树型Table`,
+ zhDesc: `演示了树型Table全选功能(包括children)`,
+}
+
+const SWrapper = styled.div`
+ .row {
+ margin-top: 10px;
+ }
+`
diff --git a/packages/component/src/components/table/demo/index.js b/packages/component/src/components/table/demo/index.js
index 1e187fac0..2975837f7 100644
--- a/packages/component/src/components/table/demo/index.js
+++ b/packages/component/src/components/table/demo/index.js
@@ -25,6 +25,7 @@ import Demo23 from './demo23'
import Demo24 from './demo24'
import Demo25 from './demo25'
import Demo26 from './demo26'
+import Demo27 from './demo27'
import './index.less'
const TableDemo = () => (
@@ -69,6 +70,8 @@ const TableDemo = () => (
混合模式
+
树型Table全选子节点
+
数据集为空
自定义Loading组件