【发布时间】:2020-05-25 14:16:54
【问题描述】:
所以我试图了解 React Hooks 以及如何使用它们。我可以按如下方式在组件内部进行提取:
var [pages,setPages] = useState();
var [page,setPage] = useState();
async function fetchData() {
await fetch(`https://myBackend/pages`)
.then(response => response.json())
.then(response => {
setPages(response);
console.log(pages[0].title);
})
.then(()=>{
// AT THIS STAGE, pages IS UNDEFINED
setPage(pages.filter(singlepage=> {
return singlepage.url == props.match.params.url;
}))
}
.catch(err => setErrors(err));
}
useEffect(() => {
fetchData();
console.log(pages[0].title);
return () => {
console.log('unmounting...');
}
},[]);
我调用我的后端来获取所有页面,这工作正常,就好像我对 pages[0].title 进行编码一样它会呈现。但是当我试图在useEffect 钩子中访问pages 中的特定值时,我要分配page,它给了我pages 未定义的错误。我的控制台日志记录清楚地表明了这一点。
我希望在页面加载之前在“组件安装”上定义 page 和 pages。所以我的问题是setPages 何时实际设置页面?我是否可以在 useEffect 中同时分配两者并相互依赖?
【问题讨论】:
标签: javascript reactjs react-hooks use-effect