为什么 react/javascript 每次我们调用它时都会重新创建一个函数实例?
Why does react/javascript recreates a function instance every time we call it?
例如onChange函数:
const MyComponent = () => {
const onChange = (e) => {
doSomething(e.target.value)
}
return <input onChange={onChange} />
};
每次更改都会重新创建。为什么会这样,为什么函数不能保持原来的引用?
React 函数组件只是 运行 每个渲染周期和 return JSX 的函数。所以每个渲染都有一个完全不同的 onChange
常量,它持有对函数的不同引用(即使行为相同)。
如果你想保留渲染之间的引用,你应该使用 React.useCallback
。您可以在 React 文档中找到更多相关信息:https://reactjs.org/docs/hooks-reference.html#usecallback
例如onChange函数:
const MyComponent = () => {
const onChange = (e) => {
doSomething(e.target.value)
}
return <input onChange={onChange} />
};
每次更改都会重新创建。为什么会这样,为什么函数不能保持原来的引用?
React 函数组件只是 运行 每个渲染周期和 return JSX 的函数。所以每个渲染都有一个完全不同的 onChange
常量,它持有对函数的不同引用(即使行为相同)。
如果你想保留渲染之间的引用,你应该使用 React.useCallback
。您可以在 React 文档中找到更多相关信息:https://reactjs.org/docs/hooks-reference.html#usecallback