javascript - react native 的 setState 中的 key/label 是如何推断出来的?

标签 javascript react-native syntax ecmascript-6

我正在浏览 React Native Autocomplete Input example当我遇到一个经典的 this.setState 调用时,它没有合并到带有标签的对象中。

  constructor(props) {
    super(props);
    this.state = {
      films: [],
      query: ''
    };
  }

  componentDidMount() {
    fetch(`${API}/films/`).then(res => res.json()).then((json) => {
      const { results: films } = json;
      this.setState({ films });
    });
  }

我期待 this.setState 调用看起来像

this.setState({ films: films });

说明允许使用这种语法糖的代码/文档在哪里?这是纯 JavaScript 功能还是 React 功能?

相关研究

这感觉类似于object decomposition但“逆转”了。

我还仔细检查了 API 调用确实返回了一个类似这样的数组

"results": [ ... ] 

所以它不像this.setState({ films });实际上有 this.setState({ films: actual_object }); 的形式.

最佳答案

它来自Object literals shorthand .

this.setState({ films });
// is the same as:
this.setState({ films: films });

另见 http://es6-features.org/#PropertyShorthand用于语法糖。

关于javascript - react native 的 setState 中的 key/label 是如何推断出来的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45553771/

相关文章:

objective-c - 如何使用 .notation 在 Objective-C 中设置数组的值?

mysql - SQL求和函数(意外的SUM_SYM,期望END_OF_INPUT))

linux - bash 中变量的空格和花括号

javascript - IE9 中使用缓存的隐藏输入值而不是更新值

javascript - 了解 Ember.JS itemController

javascript - 如何将 Firebase 自定义身份验证与 openID 提供商结合使用?

android - React Native Expo 应用程序在 Play 管理中心错误地列出了详细信息

css - 仅大写第一个字母而不是所有单词

javascript - 如何使用 JavaScript 访问文件元素的文件属性

android - 在 React Native 中的现有状态转换期间(例如在 `render` 内)无法更新