【问题标题】:Use of 'const' in react classes (and meteor)在反应类(和流星)中使用“const”
【发布时间】:2017-02-06 08:03:33
【问题描述】:

我正在使用带有 react 的流星。

在组件的类中,我有以下内容:

const Media = (props) => {
  ...  
}

但这不起作用,我不明白为什么。 我在第一行有一个构建错误:

Unexpected token, expected (

看来我不能在课堂上使用“const”。我无法定义无状态组件.. 感谢您的帮助!


一个小的额外发现:

如果我按如下方式定义组件:

import React from 'react';

const Test = () =>  {
  return (<img src=".." />);
}

export default Test;

然后我可以导入组件,一切正常。

现在,如果我有一个嵌套的“组件”,如下所示: 从“反应”导入反应;

class Test extends React.Component {

  const Test = () =>  {
    return (<img src=".." />);
  }

  render(){
    return(<img src=".." />)
  }

}

export default Test;

然后我在“const”行得到了错误。这是不能做的事情吗?我见过使用这种结构的不同代码示例。

【问题讨论】:

  • 我安装了流星 ecmascript 和 es5-shim 包。我不知道我是否需要做一些额外的事情。
  • 我正在使用 Meteor 1.4:“从 Meteor 1.3 开始,JSX 和 ES2015+ 转译内置在所有应用程序中默认安装的核心 ecmascript 包中,因此您可以使用所有 JavaScript 功能你喜欢开箱即用,没有配置。”。还有什么我需要做的吗?

标签: reactjs meteor constants


【解决方案1】:

这两个都是可能的:

const Media = (props) => (
  <div>
    ...
  </div>
)

const Media = (props) => {
  <div>
    ...
  </div>
}

第一个会返回div,后一个不会。

var Media = function Media(props) {
  return React.createElement(
    "div",
    null,
    "..."
  );
};

var Media = function Media(props) {
  React.createElement(
    "div",
    null,
    "..."
  );
};

也许错误在代码的其他地方。


通常,如果你这样写,你可能会产生这样的错误:

const Media = { a, b, c} =&gt; { return a + b + c }
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

你离开的地方 () 作为参数。


根据您的反馈,我明白了问题所在。在 ES6 中,无法在 class 中定义变量。只有方法是可能的。

从技术上讲,当您在 class 中编写 constvarlet 时,您正在定义一个变量名,即使我知道您尝试创建该函数。

但是,如果您使用 ES7,您可以在 class 内部定义 static 和非静态属性而不会出现问题。

尝试使用static 关键字并且不使用任何关键字来定义变量。

我找到的最接近的是here

【讨论】:

  • 谢谢,我正在使用 React.Component。完整的代码是这样的:class AddPage extends React.Component { const Media = (props) =&gt; { .. } }
  • 我猜你用过create-react-app@user3900157
  • 感谢您的反馈@prosti。你的解释确实是对的,可惜我需要在类外声明这种变量函数。
  • @user3900157,请接受✓it,因为它可以帮助您理解问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多