【发布时间】:2019-09-25 23:40:40
【问题描述】:
我正在使用 JS/React,我目前将数组嵌套到数组中。结构如下:
const ezra = ["Patriots", "Bears", "Vikings", "Titans", "Jets", "Bengals"]
const adam = ["Chiefs", "Cowboys", "Packers", "Ravens", "Broncos", "Cardinals"]
const playerList = [ezra, adam]
我也有如下定义的 React 状态:
this.state{
ezraWins: 0
adamWins: 0
}
我正在从 React 中提取数据并使用 playerList.forEach 来统计每个玩家所在球队的总胜场数。我想找到总数和 .setState 以将 ${player}Wins 的值更改为总数。 IE 当我计算我想要的以斯拉队的胜利时:
this.setState({ezraWins: counter})
这是我认为它可能如何工作的一个愚蠢的例子:
playerList.forEach((player) => {
const playerWins = `${player}Wins`
const playerVariable = `${player}`
// use loop to tally total wins, add that to counter variable
this.setState({${playerWins} : counter})
但是当我 console.log 这些变量时,我得到:
playerList = Patriots,Bears,Vikings,Titans,Jets,BengalsWins
playerVariable = Patriots,Bears,Vikings,Titans,Jets,Bengals
我有什么方法可以提取 playerList 中每个数组的名称并将其用于我的代码中的 .setState 命令?我也尝试使用 window 进行一些处理,但收到了一个我没有写下来的错误,可能是因为我没有将 playerList 和其中的每个数组设为全局。这是解决方法还是有更好的方法?我的理解是全局变量是不行的。
【问题讨论】:
-
看起来您正在尝试不在字符串中进行字符串插值。不过,我不完全确定你想得到什么。
-
做你的工作,然后打电话给
setStatelast。连续调用setState十次覆盖九次计划状态更新,只有最后一次会“通过”。此外,如果您想根据某个变量的值(例如a = 'cow'; b = { [a]: 'moo' };)设置对象属性名称,则需要使用[] -
@Mike'Pomax'Kamermans 让我走到了一半,我正在尝试 setState 并且它没有在我的开发工具下显示所需的值。我在为每个玩家计数后尝试 this.setState({ [playerName] : counter }) ,我相信这是正确的语法吗?我会从头到尾做一些调查,但如果你发现任何明显的错误,我很想知道!
-
不要为每个玩家调用 setState。创建一个像
update = {}这样的聚合对象,然后在forEach中更新that,然后在循环之后调用setState(update)。 -
@Mike'Pomax'Kamermans 我正在尝试使用数组 setData = [] 我正在更新。尝试将整个内容硬编码为 setState({ ezraWins: setData[0], adamWins: setData[1]}) ,但这也不起作用。不知道为什么,但我离话题太远了,我会玩它,如果我想不通,我会问另一个问题。不过,我希望你能回答一个随机问题:
标签: javascript arrays reactjs variables