reactjs - 为什么在 useEffect 中使用空数组不起作用 - React?
问题描述
我正在使用 useEffect 通过 Axios 获取数据,因为我希望它只在初始渲染时触发,所以我传递了一个空数组作为第二个参数......
useEffect(() => {
const fetchData = async () => {
const { data } = await axios.get("https://fakestoreapi.com/products")
const products = data
setData(products)
setLoading(false)
setSortType('')
}
fetchData()
}, [])
现在我正在使用另一个 useEffect 对我获取的数据进行排序......
useEffect(() => {
if (sortType == "price") {
return setData([...data].sort((a, b) => a[sortType] - b[sortType]))
}
if (sortType == "title") {
return setData([...data].sort((a, b) => {
if (a.title.toLowerCase() < b.title.toLowerCase()) return -1
if (a.title.toLowerCase() > b.title.toLowerCase()) return 1
return 0
}))
}
}, [sortType])
一切正常,但问题是每当我尝试对项目进行排序时,第二个 useEffect 会触发,然后是第一个 useEffect,这会导致组件重新获取项目。有没有其他方法可以让我只在初始渲染上运行一个函数,或者我做错了什么?
解决方案
推荐阅读
- apache-kafka - 方案架构Kafka
- yocto - bitbake nodejs - 错误:nodejs-7.10.0-r1.4 do_configure:执行
- c# - Unity3D - 可视化视场锥无法正确旋转
- github - 是否需要克隆项目 repo 才能为开源项目做出贡献
- javascript - 返回根据一些非零概率加权的值
- html - 如何在不指定像素高度的情况下进行内容 div 的溢出
- algorithm - 计算任意2个元素之间绝对差的重复过程后数组的不同可能值的个数
- discord.py - member.edit 中的“未定义错误‘Self’”
- r - 如何删除数据框中每个单元格中的附加数字
- gitlab - CI 配置将托管在 GitLab 内的不同项目中