首页 > 解决方案 > 如何从传入的参数创建对象?

问题描述

我正在尝试根据从函数传入的值创建一个新对象,但是,当我尝试这样做时 - 我将文字变量名称置于状态。例如:

updateReactions = (foods, reaction) => {
        foods.forEach((food) => {
            if (!this.state.reactions[food]) {
                let newReaction = { food: { reaction : 1 } };
        });
    };

如果我调用 updateReactions(banana, happy),它会创建一个对象

{ food: { reaction : 1 } } ;

这输出到一个新对象,字面上显示食物:反应:1,但我希望它创建

{ banana: { happy : 1 } }

谢谢!

标签: reactjs

解决方案


您可以按如下方式使用对象键:

let newReaction = { [food]: { [reaction] : 1 } };

那将引用传递的参数。
在提供的示例中,您告诉变量 newReaction 它必须是一个具有 food 对象的对象,该对象必须具有reaction key值为 1,您不是指实际的函数参数:)


推荐阅读