Я попытался сделать дерево каталогов, такое как проводник на ОС Windows.

Советы

Как получить имя файла/каталога из пути

let name = path.basename(fullPath)
console.log(‘path -> ‘ + fullPath); 
console.log(‘name -> ‘ + name);

Как получить расширение из пути к файлу или имени файла

const extension = path.extname(name)

Как выбрать каталог по диалогу.

Сначала я решил базовый каталог. Затем этот каталог устанавливается в состояние на React.

const win = remote.getCurrentWindow();
const options = {
  properties: [‘openDirectory’],
  title: ‘Choose folder’,
  defaultPath: app.getPath(‘home’)
};
const decided = dialog.showOpenDialog(win, options);
console.dir(decided);
this.setState({
  activePath: decided[0],
  files: []
});

Как получить списки каталогов.

Я получаю список каталогов и создаю DirectoryItem, используя рекурсивный компонент.

export const createDirectoryItem = (name, fullpath, children = []) => {
  return {
    name: name,
    fullpath: fullpath,
    children: children
  };
};
export const getChildDirectories = folderPath => {
  let names = fs.readdirSync(folderPath);
  let children = [];
  names.map(name => {
    let fullpath = path.join(folderPath, name);
    let stat = fs.statSync(fullpath);
    if (stat.isDirectory()) {
      children.push(createDirectoryItem(name, fullpath));
    }
  });
  return children;
};

Рекурсивный компонент для дерева каталогов.

Я сделал рекурсивный компонент DirectoryTree.jsx .

  • Этот компонент имеет расширенные списки флагов и каталогов как дочерние.
  • После загрузки этого компонента приложение ищет дочерние каталоги и устанавливает их в этот компонент как children.
  • Когда расширенный флаг становится истинным, загружается следующий рекурсивный компонент.

Ссылка



Я изучаю интерфейсное программирование. Если у вас есть какие-либо улучшения, пожалуйста, добавьте комментарий в этот репозиторий. Спасибо, что прочитали эту статью.