Javascript 如何更新钩子内的状态并从另一个钩子读取
我有这个react无状态组件,第一个useffect应该在组件加载后运行,第二个在我滚动页面时运行,以实现无限滚动 我试图做的是更新useEffect内的状态,然后在第二个内使用更新的值:Javascript 如何更新钩子内的状态并从另一个钩子读取,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我有这个react无状态组件,第一个useffect应该在组件加载后运行,第二个在我滚动页面时运行,以实现无限滚动 我试图做的是更新useEffect内的状态,然后在第二个内使用更新的值: const MyComponent = () => { const [state, setState] = useState({ page: 1 }); useEffect(() => { setState({ ...state, pa
const MyComponent = () => {
const [state, setState] = useState({
page: 1
});
useEffect(() => {
setState({
...state,
page: state.page + 1
});
}, []);
useEffect(() => {
if (window.innerHeight + document.documentElement.scrollTop !== document.documentElement.offsetHeight) {
return;
}
console.log(state.page);
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
}, []);
}
不幸的是,console.log显示该页面仍然是一个页面,即使在chrome中使用react控制台,我可以看到该值已更改
我知道useEffect是无状态的,因此console.log在更新之前正在读取该值,无论如何,我如何修复它以读取更新的值?在第二个示例中使用:
useEffect(()=>{…},[state])代码>在第二个用法中:`useffect(()=>{…},[state]);此外,您可以更新您的问题已解决的问题,以便其他人不尝试解决。