Reactjs 每当我尝试访问一个元素时,数组就会变得未定义 一些背景
我目前正在使用React的上下文API通过组件传递从我的API(Nodejs、Express、MongoDB)收集的数据。有一个名为boards的数组,我在其中存储用户订阅的各种“boards”的ID,稍后将使用该ID发出GET或fetch请求,以检索有关它们的信息 当我第一次读取React中的值时:Reactjs 每当我尝试访问一个元素时,数组就会变得未定义 一些背景,reactjs,express,Reactjs,Express,我目前正在使用React的上下文API通过组件传递从我的API(Nodejs、Express、MongoDB)收集的数据。有一个名为boards的数组,我在其中存储用户订阅的各种“boards”的ID,稍后将使用该ID发出GET或fetch请求,以检索有关它们的信息 当我第一次读取React中的值时: fetch('http://localhost:8080/api/users/login', options) .then(res => res.json()) .then(
fetch('http://localhost:8080/api/users/login', options)
.then(res => res.json())
.then( res => {
if(res.status !== 200) { setMessage(res.message) }
else {
setMessage("");
setLogged(true);
setuserID(res.userID);
setToken(res.token);
setBoards(res.boards); } //Retrieve boards here
console.log(res);
});
稍后,我在另一个组件中访问boards的值,在该组件中,我需要使用其元素生成GET请求的URL
问题
当我记录电路板的值时:
useEffect(() => {
console.log(boards);
});
但是,当我尝试访问它时,基本上:
useEffect(() => {
console.log(boards[0]);
});
我得到:
类型错误:电路板未定义
如果您能在这里帮助您识别问题,我们将不胜感激。由于api需要解决,您需要进行检查,您可以尝试使用以下代码
useEffect(() => { if(boards) console.log(boards[0]);}, [boards]);
注:
这将在每次、每次渲染时调用,这就是原因,即使api需要您能够看到的时间
您可以阅读有关useEffect第二个参数的更多信息尝试更新代码,如useEffect(()=>{console.log(boards[0]);}[boards]);检查董事会是否响应第一个元素你得到了他们的nerrma,你能显示你定义董事会状态的位置吗?看起来你试图在董事会初始化之前获得董事会。尝试将第二个参数添加到
useffect(()=>{…},[boards])
@dileptomas感谢您的快速响应!我尝试添加第二个参数,即useffect(()=>{…},[boards])代码>虽然仍然得到相同的TypeError。请在上面的代码中添加一个if条件,然后重试?
useEffect(() => {
console.log(boards);
});