从回调内访问查询变量

时间:2017-03-28 13:24:20

标签: javascript properties closures

采用以下示例:

getOptions() {

  let options = {};

  if (this.props.location.hasOwnProperty('query')) {

    const query = this.props.location.query;

    const queriesMap = {
      'createdBy': 'createdBy',
      'state': 'state',
      'created_from': 'created_at[from]',
      'created_to': 'created_at[to]'
    };

    Object.keys(query).map(function(key) {

      if(queriesMap.hasOwnProperty(key)) {
        options = Object.assign(options, { queriesMap[key]: query[key] });
      }
    });
  }

  return options;
}

我正在使用queriesMap对象来映射url参数,以构建一个新的url来调用API。问题是,当我尝试从.map回调中访问query时,query未定义。

如何访问this.message变量?

1 个答案:

答案 0 :(得分:2)

您似乎错过[]周围的queriesMap[key]。所以它应该是options = Object.assign(options, { [queriesMap[key]]: query[key] });

此外,您可以options[queriesMap[key]] = query[key]而不是Object.assign