react项目,代码如下其中`names1_${k} 这个代码有什么用?

productCode被复制成一个字符串?
既然被赋值为一个字符串,下面为啥还有 [productCode]: resultData.productCode,再赋值一次?

  getListModelDetailData = (resultData) => {

    console.log("选中之后的回调")
    console.log(resultData)
    console.log("getListModelDetailData");
    let k = resultData.k;
    let productCode = `names1_${k}`;
    let productDescZh = `names2_${k}`;
    let custCode = `names3_${k}`;
    let originWl = `names5_${k}`;

    this.props.form.setFieldsValue({
      [productCode]: resultData.productCode,
      [productDescZh]: resultData.productDescZh,
      [custCode]: resultData.custCode,
      [originWl]: resultData.wlCode + "," + resultData.sendSpot,
    });
  };
阅读 1.8k
4 个回答

题主理解的有问题实际上是:
在代码中,[productCode]: resultData.productCode 它是将 resultData.productCode 的值赋值给 productCode 对象属性。此处中括号的用法是为了动态地获取 key 值,也就是根据 productCode 变量(或变量表达式)的值来动态获取对应的属性名。
productCode 的值为 "names1_k" 时,这一行代码相当于将 resultData.productCode 的值赋值给 {"names1_k": resultData.productCode} 这个对象的属性值;而当 productCode 的值为其他字符串时,就是其他的: {"其他的": resultData.productCode}

该代码是将从 resultData 对象中取得的一些字段的值,根据其属性名拼接出来的字符串作为新的属性名,并将对应的值赋值给它们。

我改写成这样的伪代码你就明白了

getListModelDetailData = (resultData = { k: 'K值', productCode:"产品编码123", productDescZh: "产品描述信息", custCode: "自定义编码123", originWl:"来源Wl", sendSpot:"发送点" }) => {
  let k = resultData.k;
  let productCode = `names1_${k}`;
  let productDescZh = `names2_${k}`;
  let custCode = `names3_${k}`;
  let originWl = `names5_${k}`;

  this.props.form.setFieldsValue({
    ['names1_K值']: "产品编码123",
    ['names2_K值']: "产品描述信息",
    ['names3_K值']: "自定义编码123",
    ['names5_K值']: "来源Wl" + "," + "发送点",
  });
};

对象的key 是动态变化的,如:

let key = 'a';
let obj = { };
obj[key] = 100;
console.log(obj[key]) // 100
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题