[英]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.