简体   繁体   English

如何在使用 react 和 typescript 的 onchange 处理程序中使用 usecallback 方法?

[英]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.嗨,如何使用 react 和 typescript 在 onchange 处理程序中使用 useCallback 方法。

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.谢谢。

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?但是这里为什么需要useCallback呢? It usually used for memoizing the callback in case if you have your dependencies changed.它通常用于记忆回调,以防您更改了依赖项。 In your case I don't see it.在你的情况下,我看不到它。

You don't use it directly in the onChange, you have to extract the function:你不要直接在onChange中使用,要提取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}
    />
);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM