@uiw/react-native
Version:
UIW for React Native
32 lines • 1.08 kB
JavaScript
import React from 'react';
import { ScrollView } from 'react-native';
import { getTreeNodeProps } from '../util';
import TreeNode from './TreeNode';
import { useTree } from './useTree';
const Tree = props => {
const {
flattenNodes,
handleNodeExpand,
handlerCheck,
containerStyle,
expandedKeys,
checkedKeys,
keyEntities,
icon,
checkable,
disabled,
showIcon
} = useTree(props);
const treeRender = item => {
const treeNodeProps = getTreeNodeProps(item.value, {
expandedKeys,
checkedKeys: checkedKeys
});
const level = keyEntities?.[item.value].level;
const itemIcon = keyEntities?.[item.value].data.icon || icon;
return <TreeNode icon={itemIcon} checkable={checkable} disabled={disabled} {...treeNodeProps} {...item} showIcon={showIcon} onClick={handleNodeExpand} onCheck={handlerCheck} level={!!level || level == 0 ? level : 1} />;
};
return <ScrollView style={containerStyle}>{flattenNodes.map(item => treeRender(item))}</ScrollView>;
};
Tree.displayName = 'Tree';
export default React.memo(Tree);