stackuser
stackuser

Reputation: 374

How to use usecallback method in onchange handler using react and typescript?

Hi how to use useCallback method in the onchange handler using react and typescript.

i have code like below,

const [filter, setFilter] = useState(undefined);
return (
    <Select
        onChange={(selected: any) => { //use usecallback
            const selectedItems = map(selected, 'value');
            return setItem({
                prop1: filter?.prop1,
                prop2: selectedItems,
            });
        }}
    />
);

could someone help me with this. thanks.

Upvotes: 1

Views: 235

Answers (2)

Georgy
Georgy

Reputation: 1939

const [filter, setFilter] = useState(undefined);

const onChange = useCallback((selected) => {
  const selectedItems = map(selected, 'value');
  setItem({
    prop1: [],
    prop2: selectedItems,
   });
}, [setItem, filter])

return (
    <Select
        onChange={onChange}
    />
);

But why do you need useCallback here? It usually used for memoizing the callback in case if you have your dependencies changed. In your case I don't see it.

Upvotes: 1

Giovanni Londero
Giovanni Londero

Reputation: 1409

You don't use it directly in the onChange, you have to extract the function:

const [filter, setFilter] = useState(undefined);

const memoizedCallback = React.useCallback(
    (selected: any) => {
        const selectedItems = map(selected, 'value');
        return setItem({
           prop1: filter?.prop1,
           prop2: selectedItems,
        });
    },
    [filter, setItem]
);


return (
    <Select
        onChange={memoizedCallback}
    />
);

Upvotes: 1

Related Questions