I want to display inside a material TreeView the content of a directory while parsing it.
Here's what I have for now:
const getElement = (path: string) => {
fs.readdir(path, (_: any, elements: any) => {
elements.forEach((element: string) => {
let elementPath: string = libpath.join(path, element)
if(fs.lstatSync(elementPath).isFile()) {
return (
<TreeItem nodeId="" label={element}/> //I'll take care of nodeId later
)
} else {
return (
<TreeItem nodeId="" label={element}>
{getElement(elementPath)}
</TreeItem>
)
}
})
})}
export default class DataTreeView extends React.Component {
render() {
return (
<TreeView
defaultCollapseIcon={<ExpandMoreIcon />}
defaultExpandIcon={<ChevronRightIcon />}
>
{getElement(window.process.env.HOME)} //return $HOME env var, will get this value from props later
</TreeView>
);
}
}
It feels like I'm almost there but I keep getting this error "Type 'void' is not assignable to type 'ReactNode'." for the getElement function which I don't understand because it return a ReactNode in every case. Is the asynchronous part of fs.readdir is the problem here ?
Thanks for your help