【问题标题】:Call Object based off of string基于字符串调用对象
【发布时间】:2018-01-23 12:46:32
【问题描述】:

我试图通过反应从我的节点后端调用一个对象,但我试图基于一个字符串来这样做。因此,如果字符串是“Cat”,我想访问 Cat 对象及其下的任何其他键/值。

代码外观示例:

componentDidMount() {
    let catName = 'Cat' //this string is actually passed in
    this.callApi()
      .then(res => this.setState({ catsName: res.catName.name }))
                                 //catsName: res.Cat.name works
      .catch(err => console.log(err));
  }

  callApi = async () => {
    //lets say this example route has all animals in the world as objects
    const response = await fetch('/animals');
    const body = await response.json();

    if (response.status !== 200) throw Error(body.message);

    return body;
  };

我知道它不工作,因为它是一个字符串,但尝试转换字符串或对象也没有工作。我的节点知识有限,有什么建议或线索吗?或者这甚至不可能,我说错了?提前谢谢。

此示例的节点后端外观示例(如果有帮助)。所有动物的 api 文件中都有关键值(名称、年龄、食草动物等):

app.get('/animals', (req, res) => {
  res.send({ Cat, Dog, Cougar, Wolf, etc.... });
});

【问题讨论】:

  • 非常感谢大家的帮助,感激不尽。那速度快得惊人。我应该早点来这里的,但现在我想我可以说出我前额和墙上的凹痕了。

标签: javascript node.js reactjs


【解决方案1】:

当您想要访问对象中的动态键时,您需要使用方括号语法。

catsName: res[catName].name

查看Property accessors的文档

【讨论】:

  • 我什至搜索了整个网站,谢谢你的链接!
  • Shubham 抱歉耽搁了,会做的,仍然是一个堆栈 newb :)
【解决方案2】:

你需要数组表示法。

res[catName].name

【讨论】:

    【解决方案3】:

    res.catName.name 转换为res[catName].name

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      相关资源
      最近更新 更多