Вы можете использовать карри для этого
export const handleChange = setState => event => {
setState('new');
}
и в компоненте
export default function Message = (props) => {
const [message, setMessage] = useState('');
const reactOnChange = useCallback(handleChange(setMessage),[]);
return (
<input
type="text"
value={message}
placeholder="Enter a message"
onChange={reactOnChange }
/>
);
};
В качестве альтернативы:
export const handleChange = relevantData => {
return 'new';
}
export default function Message = (props) => {
const [message, setMessage] = useState('');
return (
<input
type="text"
value={message}
placeholder="Enter a message"
onChange={e => setMessage(handleChange(getRelevantDataFrom(e)))}
/>
);
};
Это дает функции полное отделение от реагировать.
Вложение функций внутри функций выглядит не очень хорошо. Если вам нравится функциональный подход, вы можете передать их
onChange={pipe(getRelevantDataFrom, handleChange, setMessage)}
где
const pipe = (...functions) => x => functions.reduce((acc, f) => f(acc), x)