T
TanStack3mo ago
automatic-azure

I have a problem with Search Params

import {
createFileRoute,
useNavigate,
useSearch,
} from '@tanstack/react-router';
import { z } from 'zod';

const characterSearchSchema = z.object({
name: z.optional(z.string()),
});

export const Route = createFileRoute('/search')({
component: RouteComponent,
validateSearch: characterSearchSchema,
});

function RouteComponent() {
const { name } = useSearch({ from: '/search' });
const navigate = useNavigate({ from: '/search' });

const onChange = (value: string) => {
if (value) {
navigate({ search: (prev) => ({ ...prev, name: value }) });
} else {
navigate({ to: '/search' });
}
};

return (
<div>
<input defaultValue={name} onChange={(e) => onChange(e.target.value)} />
</div>
);
}
import {
createFileRoute,
useNavigate,
useSearch,
} from '@tanstack/react-router';
import { z } from 'zod';

const characterSearchSchema = z.object({
name: z.optional(z.string()),
});

export const Route = createFileRoute('/search')({
component: RouteComponent,
validateSearch: characterSearchSchema,
});

function RouteComponent() {
const { name } = useSearch({ from: '/search' });
const navigate = useNavigate({ from: '/search' });

const onChange = (value: string) => {
if (value) {
navigate({ search: (prev) => ({ ...prev, name: value }) });
} else {
navigate({ to: '/search' });
}
};

return (
<div>
<input defaultValue={name} onChange={(e) => onChange(e.target.value)} />
</div>
);
}
3 Replies
adverse-sapphire
adverse-sapphire3mo ago
sorry not clear from the video what the issue is can you please describe it?
automatic-azure
automatic-azureOP3mo ago
The problem, or I don't know if it's a problem, is that I lose focus on the input when listening to the onChange event. I thought I could make a dynamic search input, but I lose focus.
adverse-sapphire
adverse-sapphire3mo ago
probably controlled vs uncontrolled input issue?

Did you find this page helpful?