Reactjs 我能否有效地使用React和x27;是否使用回调和嵌套函数?

Reactjs 我能否有效地使用React和x27;是否使用回调和嵌套函数?,reactjs,react-hooks,Reactjs,React Hooks,我可以在不影响性能的情况下提升嵌套的事件处理函数吗?基本上,我想做这样的事情: const Component = (props) => { const handleCallback = useCallback(handleChange, [props.onChange]); return <input onChange={handleChange} value={props.value} />; function handleChange(event) {

我可以在不影响性能的情况下提升嵌套的事件处理函数吗?基本上,我想做这样的事情:

const Component = (props) => {
  const handleCallback = useCallback(handleChange, [props.onChange]);
  return <input onChange={handleChange} value={props.value} />;

  function handleChange(event) {
    props.onChange(event.currentTarget.value);
  }
};
const组件=(道具)=>{
const handleCallback=useCallback(handleChange[props.onChange]);
返回;
函数句柄更改(事件){
props.onChange(event.currentTarget.value);
}
};

是的,我可以把它移到
组件
函数之外,但是对于更复杂的函数,这会让人感到很痛苦。

我确实认为这个例子是有效的,而且在性能方面与在
useCallback
本身内联回调没有什么不同。问题更多:你为什么一开始就这么做?只需内联。顺便说一句,在你的具体例子中,我认为
useCallback
是多余的,可以更清楚地删除,尤其是在更复杂的例子中。关键问题:你不认为受控输入是记忆的好选择吗?不断变化的道具值不会触发很多渲染吗?或者,也许我不太明白,我可以告诉你,无论出于什么原因,你需要多少时间来提供一个函数的稳定恒等式。可能是因为纯组件需要一个组件才能正常工作,也可能是因为来自
useffect
的依赖参数要求函数不更改。有时候你只需要一个函数来保持不变,不管发生什么。我认为这可以帮助你: