У меня есть основной компонент вместе с локальным состоянием с использованием useState и useRef, у меня также есть еще один настраиваемый перехватчик, внутри настраиваемого перехватчика я хотел бы сбросить состояние и ссылку основного компонента, правильно ли я делаю, как указано ниже?
// custom hook
const useLoadData = ({startLoad, setStartLoad, setLoadCompleted, setUserNameRef}) => {
useEffect(() => {
const fetchUser = async() => { await fetchFromApi(...); return userName;};
if (startLoad) {
const newUserName = fetchUser();
setStartLoad(false);
setLoadCompleted(true);
setUserNameRef(newUserName);
}
}, [startLoad]);
}
// main component
const myMainComp = () {
const [startLoad, setStartLoad] = useState(false);
const [loadCompleted, setLoadCompleted] = useState(false);
const userNameRef = useRef("");
const setUserNameRef = (username) => { this.userNameRef.current = username; }
useLoadData(startLoad, setStartLoad, setLoadCompleted, setUserNameRef);
refreshPage = (userId) => {
setStartLoad(true);
}
}
Правильно ли я использую настраиваемый хук, например, передав все значение внешнего состояния и метод setState? Также я обнаружил, что даже я не использую useEffect
в своем customHook, он также работает должным образом, так что мне нужно использовать useEffect
в моем custom hook? Любые отзывы и предложения приветствуются!