Если вы создаете пользовательский хук, вы можете просто вызвать другие хуки там. Таким образом, вы можете просто получить setInput
внутри хука вместо того, чтобы передавать его туда:
const useCustomHook = (initialValue) => {
const [input, setInput] = useState(initialValue);
// ...
const handleInputChange = e => {
let value = e.target.value;
let name = e.target.name;
let type = e.target.type;
// some other code
setInput(nextState);
};
return handleInputChange;
}
Этот input
будет привязан к состоянию компонента, который вызывает useCustomHook
.
РЕДАКТИРОВАТЬ:
Комбинируя ответ @ Shota с этим, вы можете создать компонент, используя ловушку useState
для внутренней обработки состояния, а также:
const CustomInput(initialState) => {
const [input, setInput] = useState(initialValue);
const handleInputChange = e => {
// ...
setInput(nextState);
};
return (<input type="text" onChange={handleInputChange} />);
}
Для использования input
во внешнем мире просто вернуть его с крючка:
useCustomHook = () => {
// ...
return {
handleInputChange,
input
}
}