我將有一個將由輸入欄位輸入的物件串列。我讓它在創建物件串列的地方作業,但是當我嘗試向已經存在的物件之一添加另一個值時。它只會替換其中的先前值。
我 console.log() 時的當前輸出
const [ tags, setTags ] = useState({
1: 'hello',
2: 'world',
3: 'goodbye'
})
如果第 1 個人添加標簽“測驗”,我的預期輸出。
const [ tags, setTags ] = useState({
1: ['hello', 'testing'],
2: 'world',
3: 'goodbye'
})
到目前為止,我擁有的功能是從輸入中獲取值。A 是 ID 號,B 是新標簽。
function updateTags(a, b){
if(tags.hasOwnProperty(a)){
setTags((prevTags) => {
return {
...prevTags,
[a]: ????
}
})
}else{
setTags((prevTags) => {
return {
...prevTags,
[a]: b
}
})
}
如果您需要更多資訊,請告訴我。
uj5u.com熱心網友回復:
我認為這應該有效
function updateTags(a, b){
if(tags.hasOwnProperty(a)){
setTags((prevTags) => {
return {
...prevTags,
[a]: Array.isArray(prevTags[a]) ? [...prevTags[a], b] : [prevTags[a], b]
}
})
} else {
setTags((prevTags) => {
return {
...prevTags,
[a]: b
}
})
}
uj5u.com熱心網友回復:
我認為你可以使用這樣的方法:
updateTags = (key, tag) =>
setTags((prevTags) => ({
...prevTags,
[key]: prevTags[key] ? [prevTags[key], tag].flat() : tag,
}));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/447645.html
標籤:javascript 数组 反应 目的 使用状态
