我有這個狀態
this.state = {
dropdown1: false,
dropdown2: false,
dropdown3: false
}
我想使用 this.setState 在狀態下訪問這些下拉串列,但是“下拉”之后的數字來自 API
onMaca = (ev) => {
this.setState({
dropdown ev: true
})
}
所以我希望鍵是動態的'dropdown1'。
感謝您的回答
uj5u.com熱心網友回復:
您可以像這樣訪問物件屬性['property name']
onMaca = (ev) => {
this.state['dropdown' ev]= true;
this.setState({
...this.state
})
}
uj5u.com熱心網友回復:
https://codezup.com/add-dynamic-key-to-object-property-in-javascript/
您可以使用其中任何一個來動態設定密鑰。稍后我將嘗試用 setState 的示例更新答案。
uj5u.com熱心網友回復:
state 是一個 JS 物件,所以你可以像往常一樣獲取它的鍵,像這樣:
const stateKeys = this.state.keys()
現在你有一個陣列: [ "dropdown1", "dropdown1", "dropdown1" ]
使用它的一種方法是:
const keysMap = statekeys.map(( item, i ) => return {
key: item,
idx: i,
number: item.replace( /dropdown/, '' )
}
keysMap 看起來像這樣:[ { key: 'dropdown1', idx: 0, number "1" }, { key: 'dropdown1', idx: 1, number "2" }, { key: 'dropdown1', idx: 2, number "3" } ]
您可以像這樣查詢keysMap給定的dropDownNumber:
let k = keysMap.find( kmap => kmap.key = dropDownNumber )
設定下拉選單的狀態:
this.setState({ k: <whatever> })
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/435178.html
標籤:javascript 反应 目的 状态
