Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: PageTree auto-scrolling sometimges not woking #9544

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

reiji-h
Copy link
Contributor

@reiji-h reiji-h commented Jan 9, 2025

Summary

  • 任意のページを開いた際、時々ページツリーの自動スクロールが効かなくなっている問題を修正
  • Ancestors 周りを削除し、初回ロード時に TargetPath からページツリーを開くかどうかを決める。

Task

Note

  • もともと initialItemNode には、開きたいページまでの ItemNode が再帰的に入っていた。
initialItemNode のイメージ。例えば"/parent2/child1" を開くとき、こうなる。
{
  pagePath: "/",
  children: [
    {
      pagePath: "/parent1",
      children: [],
      ...
    },
    {
      pagePath: "/parent2",
      children: [
        {
          pagePath: "/parent2/child1",
          children: [],
          ...
        },        
        {
          pagePath: "/parent2/child2",
          children: [],
          ...
        }
      ],
      ...
    },
    {
      pagePath: "/parent3",
      children: [],
      ...
    },
  ],
  ...
}
  • だがその情報はページの削除をすぐには反映できず、/trash へ遷移すると削除前のページツリーが表示される問題があった
  • TreeItemLayout.tsx ではそのページの子ページを useSWRxPageChildren で取ってくる。
  • initialItemNode でいくら開きたいページまでの ItemNode を再帰的に持っていたところで、途中でuseSWRxPageChildrenで上書きされると開きたいページまでのパスが消え、結果ページツリー上で開けず、自動スクロールも起こらない
 "/" での useSWRxPageChildren は次のように返す。"/parent2/child1" までの情報が消えるため、開けない。
{
  pagePath: "/",
  children: [
    {
      pagePath: "/parent1",
      children: [],
      ...
    },
    {
      pagePath: "/parent2",
      children: [],
      ...
    },
    {
      pagePath: "/parent3",
      children: [],
      ...
    },
  ],
  ...
}
  • よって、開きたいページまでの ItemNode を再帰的に持つのではなく、TargetPath で初回遷移時に開くかどうかを判断する

通信回数について

  • 開くページのパスの深さ分、通信の回数が必要になる。
  • だが修正前もそれは変わらず。Ancestors まわりを削除した分一回だけ減っている。
    • いままで(ancestors-children?path=... が存在する)
      • スクリーンショット 2025-01-09 121207
    • 今回の修正
      • スクリーンショット 2025-01-09 131616

Copy link

changeset-bot bot commented Jan 9, 2025

⚠️ No Changeset found

Latest commit: e43904b

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

Successfully merging this pull request may close these issues.

1 participant