简体   繁体   English

如何在反应中更新地图功能中的状态

[英]How to Update State in map function in react

I have an object in a state, update all values under map Function我有一个处于状态的对象,更新 map 函数下的所有值

const [docUrls, setDocUrls] = useState({ imageUrl: "",  panUrl: "", statementUrl: "" })

data.map(item=>
 item.type==='image' ?
setDocUrls({ ...docUrls, imageUrl:item.url })

:item.type==='panUrl' ?
setDocUrls({ ...docUrls, panUrl:item.url  })

:item.type==='statement' ?
setDocUrls({ ...docUrls, statementUrl: item.url})

)

data.forEach(item=>
 item.type==='image' ? docUrls.imageUrl = item.url

:item.type==='panUrl' ?docUrls.panUrl = item.url

:item.type==='statement' ? docUrls.statementUrl = item.url

)
setDocUrls(docUrls)

Method 1方法一

const [docUrls, setDocUrls] = useState({ imageUrl: "",  panUrl: "", statementUrl: "" })
const keyMap = {
    image: 'imageUrl',
    panUrl: 'panUrl',
    statement: 'statementUrl',
}

const handleUpdateState = (key, value) => {
    setDocUrls((old) => ({ ...old, [key]: value }));
};

data.forEach(item=>{
    handleUpdateState(keyMap[item.type], item.url)
})


Method 2方法二

const [docUrls, setDocUrls] = useState({ imageUrl: '', panUrl: '', statementUrl: '' });
const keyMap = {
    image: 'imageUrl',
    panUrl: 'panUrl',
    statement: 'statementUrl',
};

const handleUpdateState = () => {
    const result = {};
    data.forEach((i) => {
        result[keyMap[i.type]] = i.url;
    });
    setDocUrls(old => ({...old, ...result}));
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM