reactjs - 使用 useEffect API 调用,无法从已安装的组件切换到另一条路由
问题描述
我正在使用 useEffect 调用我的 API,它工作正常,但是当我单击一个Link
组件到另一个页面时,我得到:
TypeError: func.apply is not a function
这是我的组件:
import React, { useState, useEffect } from 'react';
import { Link } from 'react-router-dom';
import axios from 'axios';
import { makeStyles } from '@material-ui/core/styles';
import Card from '@material-ui/core/Card';
import CardActions from '@material-ui/core/CardActions';
import CardContent from '@material-ui/core/CardContent';
import Button from '@material-ui/core/Button';
import Slide from '@material-ui/core/Slide';
import dummy from '../../dummy';
const useStyles = makeStyles({
root: {
width: "90%",
marginLeft: "auto",
marginRight: "auto",
marginTop: "80px",
},
container: {
width: "100%",
marginTop: "40px",
display: "flex",
flexWrap: "wrap",
},
card: {
flex: "20%",
minWidth: "200px",
backgroundColor: "#212121",
marginLeft: "10px",
marginRight: "10px",
marginBottom: "20px",
},
title: {
color: "white",
},
desc: {
color: "white",
},
});
const StackList = () => {
const classes = useStyles();
const [displayPosts, setDisplayPosts] = useState([])
const [isLoading, setIsLoading] = useState(true)
useEffect(async () => {
const fetchData = async () => {
const result = await axios(
'http://192.168.1.17:8000/stacks'
);
setDisplayPosts(result.data)
setIsLoading(false)
};
fetchData();
}, []);
return(
<div className={classes.root}>
<h1 style={{color: "white"}}>Stack Viewer</h1>
<div className={classes.container}>
{displayPosts.map(item =>
<Slide direction="up" in={true} timeout={800}>
<Card className={classes.card}>
<CardContent>
<h2 className={classes.title}>{item.name}</h2>
<p className={classes.desc}>By {item.author}</p>
</CardContent>
<CardActions>
<Button component={Link} to="stacks/test" size="small" style={{color:"white"}}>View Weapon Stack</Button>
</CardActions>
</Card>
</Slide>
)}
</div>
</div>
)
}
我正在点击<Button component={Link} to="stacks/test" size="small" style={{color:"white"}}>View Weapon Stack</Button>
我可以从我的兄弟导航栏组件加载其他路线。
如果我用模拟 JSON 响应更改我的 useEffect 调用,一切正常。
我知道这一定是我想念的简单事情,但我不明白为什么会这样。
解决方案
推荐阅读
- linux - 性能:找不到“branch-load-misses”指标的有用描述
- java - Gradle - 如何一起构建 2 个多模块项目?(或其他项目的模块)
- rundeck - Rundeck - 生成新令牌后在哪里更新 rundeck 身份验证令牌?
- javascript - Javascript:根据嵌套的 start_date 和 end_date 对数据进行排序
- monit - M/Monit 更改/重置管理员密码
- docker - 如何找出卷属于哪个容器?
- python - 是否可以通过 cypari2 使用 Pari 并行化 python 代码?
- python - 如何从 BigQuery 表中提取所有列名的列表?
- r - 计算时间差。R
- python - Python中的平行向量点