我正在使用useCallback
钩子创建以下函数,并将其传递给input
如下。
const inputChangeFunc = useCallback(
() => (event, data) =>
updateUserEmail(event.target.value.trim(), itemId),
[updateUserEmail, itemId]
);
<input
onChange={inputChangeFunc}
defaultValue={userEmail || ''}
type="email"
error={intl.formatMessage({
id: 'incorrect_email_format',
defaultMessage: 'Incorrect Email Format',
})}
/>
我有以下问题:
在我的依赖数组中,我应该包括
event
anddata
吗?我的理解是我不应该,因为这些是函数的输入,因此inputChangeFunc
当这些值发生变化时不需要重新创建。intl.formatMessage
我应该将调用包装error
在 auseMemo
中以防止触发重新渲染 - 像这样:const emailMessage = useMemo( () => intl.formatMessage({ id: 'incorrect_email_format', defaultMessage: 'Incorrect Email Format', }), [intl] );
或者这是不必要的?