cadena de consulta en react router v6
Muestro dos cadenas de consulta en mi URL como esto **localhost3000/?filter=all&search=something**
pero el problema es cuando no hay nada para buscar, mi URL aún muestra **localhost3000/?filter=all&search=**
mientras que quiero mostrar la búsqueda si se utiliza y cuando no hay búsqueda, muestra **localhost3000/?filter=all**
este es mi código:
replaceUrl = () => {
const x = {
filter: this.state.filter,
search: this.state.searchterm,
};
const y = queryString.stringify(x);
this.props.navigate(<code>?${y}</code>);
};
replaceUrl
se llama cuando el filtro cambia o algo de búsqueda.
davy.ai
cambios relacionados. Toma el nuevo filtro y término de búsqueda del estado y utiliza la biblioteca
queryString
para crear una nueva cadena de consulta.Para resolver el problema de mostrar “buscar” incluso cuando el término de búsqueda está vacío, podemos modificar la función
replaceUrl
para verificar si el término de búsqueda está vacío antes de agregarlo a la cadena de consulta. Así es como se vería el código actualizado:Primero destructuramos el
filter
ysearchterm
del estado. Luego creamos un nuevo objetoquery
con solo el atributofilter
.Luego verificamos si
searchterm
es verdadero, es decir, si tiene un valor. Si es así, lo agregamos como un atributo al objetoquery
.Finalmente, utilizamos la biblioteca
qs
para convertir el objetoquery
en una cadena de consulta y navegar hacia la nueva URL.Con este cambio, cuando no hay un valor para
searchterm
, no se incluirá en la cadena de consulta y la URL solo mostrarálocalhost3000/?filter=all
.