javascript - 当我对我的对象进行动态解构时,React 返回一个意外的令牌错误
问题描述
我正在使用 React 中的 onChange 事件更新输入字段。
const handleUpdateText = (id, name, text) => {
const newItems = items.map( item => {
if (item.id === id) {
return {...item, [menuLang][name]:text } // <-- error here at ][
}
return item;
} )
setItems(newItems);
}
名称和文本以及目标输入字段的名称属性和值。
menuLang是一个状态变量(字符串,例如“en”)。
这些项目是这样的:
{
id: 1,
type: "menuitem",
isVisible: true,
en: {
name: "Salad",
desc: "Fresh, seasonal ingredients",
},
price: "10",
},
如果没有动态解构,它可以正常工作:
const newItem = {...item}
newItem[menuLang][name] = text;
return newItem;
// instead of: return {...item, [menuLang][name]:text }
任何想法有什么错误?
解决方案
使用计算属性名称
let item={id:1,type:"menuitem",isVisible:!0,en:{name:"Salad",desc:"Fresh, seasonal ingredients"},price:"10"};
console.log(item)
let name = 'name'
let text = "Orange"
let menuLang = 'en'
item = {...item,[menuLang]:{...item[menuLang],[name]:text}}
console.log(item)
推荐阅读
- c# - 如何在反序列化之前从 json 字符串中删除元素?
- javascript - IIS ASP NET Core 上的微调器加载失败
- c# - 每当刷新数据网格时向上移动垂直滚动条
- c# - 在 C# 中对数组进行排序,除了一个数字
- paypal - 如何添加贝宝购物篮?
- drupal - Drupal9 自定义模块
- uwp - UWP - 多语言:在运行时更改语言字符串
- python - Python子进程解码特殊字符
- python - 有什么方法可以在 Windows 10(32 位)中使用 32 位 python3 使用 64 位模块?
- python - 有没有更简单的方法在字符串中的数字后面放置单词?