嘗試通過編碼(React)學習,我的問題是:React 在任何地方都使用 map() ,所以我們可以用 map 替換每個回圈,例如 for loop 嗎?什么時候用 map 好,什么時候用 for loop 好?在以下示例中,我使用了 for 回圈,我應該使用 map 嗎?
這將如何更改為 map ?:
const links = currentLinks;
for (let i = 0; i < links.length; i) {
let border = links[i].boundary.points;
drawPath(canvas, ctx, border, '#AA1111', '#AA1111', 0.2);
}
-----------------
links.map(() => (
?
));
uj5u.com熱心網友回復:
這是一個偏好問題,但在我的書中,大量使用回圈意味著某人缺乏經驗。主要區別在于您需要在使用回圈時保持狀態。當你使用一個state時,你需要為它想一個名字——不管你信不信——這有時是最難的部分。另一方面,,.map()等只是運算式。.filter().reduce()
使用你喜歡的任何東西,但要明智地使用它。
話雖如此,有時使用回圈更有意義。經驗法則是,每當您的代碼產生某種副作用時,使用回圈更合乎邏輯。考慮這兩個例子:
for (const fruit of fruits) {
draw(fruit);
}
// or:
fruits.forEach(
fruit => draw(fruit) // makes sense
);
// vs.
fruits.map(
fruit => draw(fruit)
);
所有人都會作業并做同樣的事情,但最后一個是相當業余的。它回傳一個包含任何回傳值的陣列,draw()并且從不使用該回傳值,因此失去了使用運算式的目的。
總結:
- 表達?采用
.map() - 副作用?使用回圈
uj5u.com熱心網友回復:
map => For Transformation or Projection - 它提供了一個新的集合
loops => 用于執行某些操作(在集合本身或一般情況下) - 它不回傳任何內容
例如
const data = [1, 2, 3, 4, 5]
你想得到陣列中每個數字的雙打
const doubled = data.map((number, index) => number * 2);
//-- Output
[2, 4, 6, 8, 10]
如果專案在 2 到 5 之間,您想呼叫某個方法(或執行某些操作)
data.forEach(number => {
if(number > 2 && number < 5){
//call some method
}
else{
//..... do some other work
}
}
要么
for(let i=0; i< data.length; i ){
const number = data[i];
if(number > 2 && number < 5){
//call some method
}
else{
//..... do some other work
}
}
我知道這些例子是人為的,不是很好,但我希望你明白這一點。如果您有任何疑問,請在評論中告訴我
更新 對于您的情況,您可以使用以下地圖
links.map(link => {
let border = link.boundary.points;
drawPath(canvas, ctx, border, '#AA1111', '#AA1111', 0.2);
});
uj5u.com熱心網友回復:
首先也是最重要的,如果你知道你需要盡早突破,那么你需要使用回圈,因為你不能使用 forEach 和 map 提前回傳(不使用過濾器之類的東西)。
如果狀態或屬性發生變化,您也將獲得重新渲染。使用 map 將創建一個新陣列(至少是對陣列的參考),這將為您提供通常需要的重新渲染。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434683.html
標籤:javascript html 反应 循环 for循环
