Query enumeration recomputes on pathname/hash-only navigation with unchanged search (Solid 2)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 74/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- frontend
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.)
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.3k
- Forks
- 180
- Merge medio
- 1 d 4 h
- PR fusionados (30 d)
- 27
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de solidjs/solid-router
-
Dificultad 4/5 3-5 días Aptitud para principiantes 50/100
solidjs/solid-router#625 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
<A> costs ~6us of server CPU per instance during SSR (20x a plain <a>), mostly mergeProps/splitPropsAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
solidjs/solid-router#583 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
solidjs/solid-router#569 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
solidjs/solid-router#518 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 64/100
solidjs/solid-router#502 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de solidjs/solid-router
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
openedx/frontend-app-authoring#3274 ·
Los mantenedores suelen responder en 1 día
-
🎙️ task - fix(deployer): deploy --env prep runs deploy:dev where the repo declares deploy:prepAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
area/documentation status/need-triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
google-gemini/gemini-cli#29548 ·
Los mantenedores suelen responder en 1 día
-
sdk-typescript vector-store
Dificultad 2/5 Medio día Aptitud para principiantes 82/100
mem0ai/mem0#7495 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día