【发布时间】:2020-02-13 22:04:17
【问题描述】:
我有一些在 React 中创建的按钮选项卡。当我单击一个时,它会重置所有其他选项卡以显示默认文本。
function resetAllTabs() 可以作为经典的 for 循环正常工作。但是 .map() 或 for...of {} 根本不会重置我的标签。没有错误,只是沉默......
//// STATE MANAGER FOR TABS
import React, { useState } from 'react';
const [currentTab, setCurrentTab] = useState(null);
const [tab1, setTab1] = useState(<p>SET 1</p>);
const [tab2, setTab2] = useState(<p>SET 2</p>);
...
const [tab10, setTab10] = useState(<p>SET 10</p>);
let tabs = [[tab1, setTab1], [tab2, setTab2], [tab3, setTab3],
[tab4, setTab4], [tab5, setTab5], [tab6, setTab6],
[tab7, setTab7], [tab8, setTab8], [tab9, setTab9],
[tab10, setTab10]]
// WORKS JUST FINE!
function resetAllTabs() {
for (let i=0; i<tabs.length; i++) {
tabs[i][1](<p>SET {i + 1}</p>)
}
};
// DOESN'T WORK IN BROWSER. NO ERROR. JUST DOESN'T DO ANYTHING...
function resetAllTabs() {
tabs.map = ((setTab, i) => setTab[1](<p>SET {i + 1}</p>));
};
resetAllTabs();
【问题讨论】:
-
你的意思是
tabs.forEach((setTab, i) => ...)? -
tabs.map = ((setTab, i) => setTab[1](<p>SET {i + 1}</p>));用箭头函数覆盖map属性。 -
另外,当您不进行映射操作时,请不要使用
.map进行简单的迭代。如果需要使用迭代方法,则使用forEach。 -
而且可能你甚至不需要使用迭代方法,just use os
for … of。 -
我没有注意到 .map 后面有一个 = 运算符!现在可以了。我也用 forEach 替换了 map 。谢谢。
标签: javascript arrays reactjs