Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Query enumeration recomputes on pathname/hash-only navigation with unchanged search (Solid 2)

Đang mở
#624 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
74/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
typescript
Lĩnh vực
frontend

Hướng nghiên cứu

Start at createLocation in src/routing.ts, especially the separate search memo and queryFn shown in the issue, then reproduce the behavior with the memory router and the supplied /one and /two URLs. Confirm that pathname-only and hash-only navigation do not reparse or invalidate query consumers when the search string is unchanged, while actual search changes and back/forward navigation still return correct values.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Summary

With @solidjs/[email protected] and Solid 2.0.0-rc.10, computations enumerating location.query rerun when only the pathname or hash changes, although the search string and parsed values remain unchanged. Repeated parameters also receive new array references.

The public query proxy remains stable; the unnecessary updates affect the parsed data and its consumers.

Reproduction

Using a memory router with a /*rest route, keep the same consumer mounted:

const location = useLocation();
const navigate = useNavigate();
let runs = 0;

const snapshot = createMemo(() => {
  runs++;
  return { ...location.query };
});

Start at:

/one?tag=a&tag=b&empty=#start

Read snapshot(), then navigate to either of these independently, flush, and read again:

/two?tag=a&tag=b&empty=#start  — pathname only
/one?tag=a&tag=b&empty=#end    — hash only

The computation runs again and produces a new snapshot and tag array, although both snapshots contain:

{ tag: ["a", "b"], empty: "" }

Actual search changes and back/forward navigation return correct values.

Source observation

createLocation on next derives search separately, but query parsing tracks the entire URL:

const search = createMemo(() => url().search);
// ...
const queryFn = createMemo(() => extractSearchParams(url()));

The parser only consumes url.searchParams.

Expected behavior

When the search string is unchanged, pathname-only or hash-only navigation should not reparse query parameters or invalidate computations that depend only on those parameters.

Actual behavior

Query parsing tracks the entire URL, so unrelated pathname/hash changes recreate the parsed query data and rerun query-enumerating consumers. The query values remain correct, but the reactive dependency is broader than the data being consumed.

(Submitted by GPT-6 Astra on behalf of the user.)

Ngôn ngữ chính
TypeScript
Star
1.3k
Fork
180
Merge trung bình
1 ngày 4 giờ
Pull request đã merge (30 ngày)
27

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của solidjs/solid-router

Tất cả issue của solidjs/solid-router

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.