javascript - ReactJS 和分页中的 useState 问题
问题描述
我有一个问题,我无法用useState
React 解决。我正在尝试对电影和分页进行 API 请求,但我的状态之一是undefined
,我真的不明白为什么......我的组件是一个功能组件。
这是我的useState
:
const [state, setState] = useState({
films: [],
page: 1,
genres: [],
currentCategory: ""
})
这是我的 API 请求:
const getFilms = () => {
Axios.get(`${baseUrlDiscover}&page=${state.page}&with_genres=${state.currentCategory}`)
.then(response => {
setState({
films: response.data.results
});
})
.catch(error => {
console.log(error);
setState({
films: []
});
});
}
getFilms()
挂载组件的调用。
useEffect(() => {
getFilms()
}, [])
我用.map
这样的方式显示收到的电影:
const theMovies = state.films.map((film, idx) => {
return <Film film={film} key={idx} />
});
此时我在第一页上收到 20 部电影,但是当我登录page state
控制台获取第二页时,我收到了undefined
。我想使用下面的这部分代码来获取 20 部电影的第二页,但没有page state
我收到类似的错误state.films.map is undefined
const btnClickNext = (e) => {
if (state.films && state.page !== 500) {
setState(
prevState => ({ page: (prevState.page += 1) }),
getFilms
);
}
getFilms();
}
在return
我调用btnClickNext
函数中:
<Button
href=""
target="_blank"
onClick={() => btnClickNext()}
>
Next <FaChevronRight />
</Button>
你知道问题可能来自哪里吗?为什么console.log(state.page)
给undefined
?
非常感谢
解决方案
实际上这不是你应该使用 useState 的方式你应该像这样创建单独的 useState
const [films, setFilms] = useState([]),
const [page, setPage] = useState(1),
const [genres,setGenres] = useState([]),
const [currentCategory, setCurrentCategory] = useState("")
无论您需要在哪里更新这些状态,您都可以相应地调用相应的设置器。
推荐阅读
- python - 获取数据框中基于常见项目列表的列
- wordpress - 我们的服务器和 CDN 准备好迎接更多活跃用户了吗?
- android - DownloadManager 图像未显示在图库中
- python - 当 selenium 在 Instagram 中上传图像时,无法使用 pywinauto 连接到 Google Chrome 中的“打开”对话框窗口
- scala - spark scala sameElement 无法按预期工作
- reactjs - 是否可以在动态 url 中显示 mapbox 坐标?
- android - 代码检查在 Android Studio 中不起作用(省电已关闭)
- python - Opencv imshow 在 macOS 11.0.1 (Big Sur) 上崩溃 python 启动器
- python - 如何摆脱标题?
- c# - C# udp 图片大小