【发布时间】:2020-11-23 19:37:41
【问题描述】:
我有使用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 方法一样正确使用自定义钩子?我还发现即使我没有在我的 customHook 中使用useEffect,它也可以按预期工作,所以我需要在我的自定义钩子中使用useEffect 吗?欢迎任何评论和建议!
【问题讨论】:
标签: reactjs react-hooks