【发布时间】:2021-01-09 13:47:22
【问题描述】:
我正在从 Studio Ghibli API 获取数据,并且能够成功获取数据,设置对象的状态数组并将其呈现在我的演示组件中。但是,我正在尝试创建一个函数,它将向状态数组中的每个对象添加新属性“关键字”。问题是当我尝试复制状态数组以在我的 createKeywords 函数中对其进行操作时,返回的副本为空,并且在设置后我无法对其进行操作。
这是相关代码:
const baseUrl = 'https://ghibliapi.herokuapp.com/'
const [hasError, setErrors] = useState(false)
const [movies, setMovies] = useState([])
useEffect(() => {
fetch(baseUrl + 'films')
.then((res) => res.json())
.then((res) => {
console.log(res);
setMovies(res)
createKeywords()
})
.catch(err => setErrors(true));
}, [])
const createKeywords = () => {
const moviesWithKeywords = [...movies]
moviesWithKeywords.forEach(function(movie){
movie.keyword = 'castle'
});
setMovies(moviesWithKeywords)
}
如果我不调用 createKeywords 函数,一切正常,但显然复制和设置新电影状态会产生问题。我尝试在 useEffect 中添加 [movies] 而不是空数组,这有效,但随后 useEffect 无限期运行。提前谢谢你,React 不是我的强项!
【问题讨论】:
标签: reactjs react-hooks fetch use-effect