Error: Too many re-renders. because i changed setState
Error: Too many re-renders. because i changed setState
错误:重新渲染太多。
解释代码:(
iam 映射对象数组 - 在那个映射函数中我制作了新的对象数组(raiting = [..rating, {}]
)
然后将 useState 状态设置为该对象数组 ( setRatingFinal([...rating])
)
然后最后我显示 - 但我收到错误。
)
如果可以在答案中编写代码,有人可以给我写答案吗?
谢谢。
var [ratingFinal, setRatingFinal] = useState([])
var rating = []
movies.map((movie, i) => {
rating = [...rating, {index: i, value: movie["IMDB Votes"] * movie["IMDB Rating"]}];
});
setRatingFinal([...rating]) **//because of this is error**
return (
<div>
{ratingFinal.map((movie, i) => {
<div key={i}>{movie.value}</div>
})}
</div>
);
}
export default App;
电影是 3021 个对象的数组 - 该数组中一个对象的示例 -
{"IMDB Rating": 6.3, "IMDB Votes": 365}
我在没有 var rating
的情况下尝试过 ratingFinal
,但是那行不通 - 就像这样:
var [ratingFinal, setRatingFinal] = useState([])
movies.map((movie, i) => {
setRatingFinal([...ratingFinal, {index: i, value: movie["IMDB Votes"] * movie["IMDB Rating"]}]);
});
return (
<div>
{ratingFinal.map((movie, i) => {
<div key={i}>{movie.value}</div>
})}
</div>
);
}
export default App;
您错误地使用了 .map()
方法 - 如果您想保留语法,请使用 .forEach()
.
映射returns一个新数组所以用法是:
const rating = test.map((movie, i) => {
return {index: i, value: movie["IMDB Votes"] * movie["IMDB Rating"]}
});
setRatingFinal(rating)
超时并移动setRatingFinal([...rating])
超时最小值100ms,
并且您必须创建一个具有值的对象,因为在第一次渲染时它不会显示(它无法读取未定义的 属性)
var [ratingFinal, setRatingFinal] = useState([{value: 'something'}])
错误:重新渲染太多。
解释代码:(
iam 映射对象数组 - 在那个映射函数中我制作了新的对象数组(raiting = [..rating, {}]
)
然后将 useState 状态设置为该对象数组 ( setRatingFinal([...rating])
)
然后最后我显示 - 但我收到错误。
)
如果可以在答案中编写代码,有人可以给我写答案吗?
谢谢。
var [ratingFinal, setRatingFinal] = useState([])
var rating = []
movies.map((movie, i) => {
rating = [...rating, {index: i, value: movie["IMDB Votes"] * movie["IMDB Rating"]}];
});
setRatingFinal([...rating]) **//because of this is error**
return (
<div>
{ratingFinal.map((movie, i) => {
<div key={i}>{movie.value}</div>
})}
</div>
);
}
export default App;
电影是 3021 个对象的数组 - 该数组中一个对象的示例 -
{"IMDB Rating": 6.3, "IMDB Votes": 365}
我在没有 var rating
的情况下尝试过 ratingFinal
,但是那行不通 - 就像这样:
var [ratingFinal, setRatingFinal] = useState([])
movies.map((movie, i) => {
setRatingFinal([...ratingFinal, {index: i, value: movie["IMDB Votes"] * movie["IMDB Rating"]}]);
});
return (
<div>
{ratingFinal.map((movie, i) => {
<div key={i}>{movie.value}</div>
})}
</div>
);
}
export default App;
您错误地使用了 .map()
方法 - 如果您想保留语法,请使用 .forEach()
.
映射returns一个新数组所以用法是:
const rating = test.map((movie, i) => {
return {index: i, value: movie["IMDB Votes"] * movie["IMDB Rating"]}
});
setRatingFinal(rating)
超时并移动setRatingFinal([...rating])
超时最小值100ms,
并且您必须创建一个具有值的对象,因为在第一次渲染时它不会显示(它无法读取未定义的 属性)
var [ratingFinal, setRatingFinal] = useState([{value: 'something'}])