rct-tree
v1.1.2
Published
A tree component based on ReactJS and Typescript.
Downloads
155
Maintainers
Readme
rct-tree
A tree component based on ReactJS and Typescript.
Installation
yarn add rct-tree
Development
Recommend to use yarn to start the project:
yarn install
yarn run dev
Example
Here is a complex example while you try to use this component.
Data Structure
const treeData = [
{
title: '1',
expand: true,
selected: false,
checked: false,
disabled: false,
index: 0,
children: [
{
title: '1-1',
expand: true,
selected: false,
checked: false,
disabled: false,
index: 1
},
{
title: '1-2',
expand: true,
selected: false,
checked: false,
disabled: false,
index: 1
},
{
title: '1-3',
expand: false,
selected: false,
checked: false,
disabled: true,
index: 1,
children: [
{
title: '1-3-1',
expand: true,
selected: false,
checked: false,
disabled: true,
index: 2
},
{
title: '1-3-2',
expand: true,
selected: false,
checked: false,
disabled: false,
index: 2,
children: [
{
title: '1-3-2-1',
expand: true,
selected: false,
checked: false,
disabled: false,
index: 3
},
{
title: '1-3-2-2',
expand: true,
selected: false,
checked: false,
disabled: false,
index: 3
}
]
}
]
}
]
}
]
Usage
import RctTree from 'rct-tree'
export default class Example extends React.Component<IProps, IState> {
private tree?: any
constructor(props: IProps) {
super(props)
this.state = {
showCheckBox: true,
showIcon: true,
autoExpandAll: true,
autoCollapseAll: false,
multiple: true
}
}
public render() {
const icon = {
parent: <span styleName="rct-icon-directory" />,
leaf: <span styleName="rct-icon-file" />
}
const {
showCheckBox,
showIcon,
autoExpandAll,
autoCollapseAll,
multiple
} = this.state
return (
<div styleName="example-wrapper">
<div styleName="example-tree">
<RctTree
rowHeight={32}
height={320}
treeData={treeData}
showCheckBox={showCheckBox}
showIcon={showIcon}
icon={icon}
autoExpandAll={autoExpandAll}
autoCollapseAll={autoCollapseAll}
multiple={multiple}
placeholder={`你想显示什么placeholder?`}
onSelect={this.onSelect}
onCheck={this.onCheck}
onToggleExpand={this.onExpand}
/>
</div>
<div styleName="example-controller">
<button styleName="example-controller-button" onClick={this.changeCheckBox}>
显示/隐藏CheckBox
</button>
<button styleName="example-controller-button" onClick={this.changeShowIcon}>
显示/隐藏Icon
</button>
<button styleName="example-controller-button" onClick={this.changeMultiple}>
单选/多选
</button>
</div>
</div>
)
}
public changeCheckBox = () => {
let { showCheckBox } = this.state
showCheckBox = !showCheckBox
this.setState({
showCheckBox
})
}
public changeShowIcon = () => {
let { showIcon } = this.state
showIcon = !showIcon
this.setState({
showIcon
})
}
public changeMultiple = () => {
let { multiple } = this.state
multiple = !multiple
this.setState({
multiple
})
}
public onSelect = (nodes: any) => {
console.log(nodes)
}
public onCheck = (nodes: any) => {
console.log(nodes)
}
public onExpand = (nodes: any) => {
console.log(nodes)
}
}
Tree Props
| Property | Type | Description | Default |
| ----------------- | ---------------------------------- | ----------------------------------------------- | ---------- |
| treeData
| ITreeNodeParams[] | 必须
树形数组的数据 | -
|
| rowHeight
| number | 可选
节点的高度 | 32px
|
| height
| number | 可选
树的可视高度,设置该属性表示使用虚拟渲染 | 100%
|
| showCheckBox
| boolean | 可选
是否显示 checkbox 多选框 | false
|
| showIcon
| boolean | 可选
是否显示图标 | false
|
| icon
| IIcon | 可选
传入的自定义 icon 图标 | 默认图标
|
| autoExpandAll
| boolean | 可选
是否自动展开所有节点 | true
|
| autoCollapseAll
| boolean | 可选
是否自动收起所有节点 | false
|
| placeholder
| string | 可选
没有数据时的提示 | 暂无数据
|
| onSelect
| (nodes: ITreeNodeParams[]) => void | 可选
点击树节点时触发 | -
|
| onCheck
| (nodes: ITreeNodeParams[]) => void | 可选
点击 checkbox 时触发 | -
|
| onToggleExpand
| (nodes: ITreeNodeParams[]) => void | 可选
展开和收起子列表时触发 | -
|
ITreeNodeParams Props
| Property | type | Description | Default |
| -------------- | ----------------- | ---------------------------------- | ---------- |
| title
| string | 可选
当前节点的标题 | -
|
| expand
| boolean | 可选
当前节点是否展开 | true
|
| selected
| boolean | 可选
当前节点是否被选中 | false
|
| checked
| boolean | 可选
当前节点的多选框是否被选中 | false
|
| disabled
| boolean | 可选
当前节点是否为禁用状态 | false
|
| showCheckBox
| boolean | 可选
是否显示当前节点的 checkbox | false
|
| showIcon
| boolean | 可选
是否显示当前节点的 icon | false
|
| icon
| IIcon | 可选
传入的自定义 icon 图标 | 默认图标
|
| currentNode
| ITreeNodeParams | 可选
当前节点 | -
|
| children
| ITreeNodeParams[] | 可选
子节点 | -
|
IIcon
| Property | Type | Description | Default |
| -------- | --------------- | ----------------- | ------------ |
| parent
| React.ReactNode | 必须
非叶子节点 | 文件夹图标
|
| leaf
| React.ReactNode | 必须
叶子节点 | 文件图标
|