Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

DFS这里是否能调整为尾递归

オープン
#454 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
35/100
issue の種類
リファクタリング
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
react, typescript
領域
frontend

調査の方向性

src/hooks/useFilterTreeData.ts のリンク先の dig 関数付近から始め、再帰的なフィルタリングが子要素、マッチ、および結果の順序をどのように処理しているかを調べます。フィルタリングの動作や返されるツリーデータを変更せずに DFS を末尾再帰に調整できるか判断し、その後、既存のプロジェクトチェックでリグレッションがないことを確認します。

索引モデルが issue の本文から書いたものです。

説明

https://github.com/react-component/tree-select/blob/a000435807512c5799292abbd13bfe4649334bae/src/hooks/useFilterTreeData.ts#L40

function dig(list: DefaultOptionType[], keepAll: boolean = false): DefaultOptionType[] {
  function digRecursive(list: DefaultOptionType[], result: DefaultOptionType[]): DefaultOptionType[] {
    if (list.length === 0) {
      return result;
    }

    const dataNode = list[0];
    const children = dataNode[fieldChildren];
    const match = keepAll || filterOptionFunc(searchValue, fillLegacyProps(dataNode));
    const childList = dig(children || [], match);

    if (match || childList.length) {
      result.push({
        ...dataNode,
        isLeaf: undefined,
        [fieldChildren]: childList,
      });
    }

    return digRecursive(list.slice(1), result);
  }

  return digRecursive(list, []);
}
主要言語
TypeScript
スター
312
フォーク
204
平均マージ
37分
マージ済み PR(30日)
1

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

react-component/tree-select のほかの issue

react-component/tree-select の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。