[英]Create objects with map function, currentValue as a object key
在我的 ReactApp 中,我保留了用戶的狀態列表(從后端 API 獲取)。 它被稱為“currentUsers”。
class Lobby extends React.Component {
constructor(props) {
super(props);
this.state = {
currentUsers: ["TestUser1", "TestUser2"],
buttonList: [],
}
}
我想填充 buttonList 以擁有對象數組,其中數組將如下所示(示例):
[{
"TestUser1": {
"inviteButtonValue": "Invite",
"chatButtonValue": "Chat"
}
},
{"TestUser2": {
"inviteButtonValue": "Invite",
"chatButtonValue": "Chat"
}
}]
有我的主要功能。
produceButtonValues = (currentUsersList) => {
let inputList = currentUsersList
.map( (nickname) => {
return {
nickname: {
"inviteButtonValue": "Invite",
"chatButtonValue": "Chat"
}
};
}
);
this.setState({buttonList: inputList});
}
我嘗試使用地圖,但看起來我無法將數組元素作為對象鍵,即“TestUser1”等,但得到了“昵稱”(在 Firefox DevTools Add-on 的“組件”選項卡中看到)
...
{nickname: {
"inviteButtonValue": "Invite",
"chatButtonValue": "Chat"
}
}
...
我觸發我的功能如下:
componentDidMount() {
this.produceButtonValues(this.state.currentUsers);
如何解決? 順便說一句:當我運行console.log(this.state.buttonList);
就在setState
之后,我仍然看到空數組,因為它是在初始狀態下創建的。 為什么?
你正在尋找這個:
produceButtonValues = (currentUsersList) => {
let inputList = currentUsersList
.map( (nickname) => {
return {
[nickname]: {
"inviteButtonValue": "Invite",
"chatButtonValue": "Chat"
}
};
}
);
this.setState({buttonList: inputList});
}
要將變量用作對象鍵的值,您需要用[]
包裹它
您可以使用字符串作為鍵而不是變量名鍵。 在這種情況下,您可以使用模板字符串來強制執行字符串的鍵
例如:
produceButtonValues = (currentUsersList) => {
let inputList = currentUsersList.map( nickname => {
return {
`${nickname}`: {
"inviteButtonValue": "Invite",
"chatButtonValue": "Chat"
}
};
});
this.setState({buttonList: inputList});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.