React 中的类变量与 ES6

2024-02-23

这个问题可能已经在其他地方得到了回答,但在标记为重复之前,请帮助我解决这个问题。我指的是使用react和d3的以下codepen:https://codepen.io/swizec/pen/oYNvpQ https://codepen.io/swizec/pen/oYNvpQ

但是,我无法弄清楚这个 codepen 如何在没有任何关键字的情况下使用类中声明的变量:

class Colors extends Component {
 colors = d3.schemeCategory20;
  width = d3.scaleBand()
            .domain(d3.range(20));

   ....
}

当我尝试执行此代码时,出现以下错误:

./app/components/D3IndentedTree/Chloreophath.js
Module build failed: SyntaxError: Unexpected token (13:11)

  11 | // Draws an entire color scale
  12 | class Colors extends Component {
> 13 |     colors = d3.schemeCategory20;
     |            ^
  14 |     width = d3.scaleBand()
  15 |         .domain(d3.range(20));
  16 | 

我无法弄清楚为什么会出现此错误。我知道你不能直接在类内部声明类的变量/属性。但是为什么代码笔可以工作呢?

提前致谢!

更新:添加 webpack.config.js 文件:

    var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: './app/index.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'index_bundle.js',
        publicPath: '/'
    },
    module: {
        rules: [
            { test: /\.(js)$/, use: 'babel-loader' },
            { test: /\.css$/, use: [ 'style-loader', 'css-loader'] },
            {
                test: /\.png$/,
               loader: "url-loader?limit=100000"
             },
             {
               test: /\.jpg$/,
               loader: "file-loader"
             },
             {
              test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/,
               loader: 'url-loader? limit=10000&mimetype=application/font-woff'
              },
              {
               test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
               loader: 'url-loader?limit=10000&mimetype=application/octet-stream'
              },
              {
               test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
               loader: 'file-loader'
               },
               {
               test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
               loader: 'url-loader?limit=10000&mimetype=image/svg+xml'
              }
        ]
    },
    plugins: [new HtmlWebpackPlugin({
        template: 'app/index.html'
    }),
    new webpack.ProvidePlugin({
        "React": "react",
      }),],
    devServer: {
        historyApiFallback: true
    }
};

但是为什么代码笔可以工作呢?

因为它使用了转译器(在这种情况下,Babel https://babeljs.io)支持该语法 https://github.com/tc39/proposal-class-fields(目前这是第 3 阶段提案,尚未成为指定功能,但通常受到与 React 代码一起使用的转译器的支持)。

您可以看到它正在使用 Babel 进行转译,因为它在 JS 窗格标题中的“JS”旁边显示“(Babel)”:

...如果您单击旁边的齿轮图标,您将看到 Babel 被选为“预处理器”。

在这个特殊的例子中,Babel 采取了这样的做法:

class Colors extends Component {
  colors = d3.schemeCategory20;
  width = d3.scaleBand()
            .domain(d3.range(20));

   // ....
}

...并让它看起来好像是这样写的:

class Colors extends Component {
  constructor() {
    this.colors = d3.schemeCategory20;
    this.width = d3.scaleBand()
                   .domain(d3.range(20));
  }
  // ....
}

...(然后很可能将其转换为 ES5 兼容的代码,具体取决于转译设置)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 中的类变量与 ES6 的相关文章

  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • nodejs (libuv) 事件循环是否在一个阶段(队列)中执行所有回调,然后再进入下一阶段或以循环方式运行?

    我正在研究 Node js 中 libuv 提供的事件循环 我遇到了关注 Deepal Jayasekara 的博客 https blog insiderattack net event loop and the big picture n
  • 如何在网站上使用 svg 元素制作块的屏幕截图?

    我在网站上创建了一个构造函数 其本质是将所选元素及其颜色 svg中的元素 添加到访问者选择的背景和背景颜色 png中的背景 中 然后必须单击 保存 结果 按钮并仅执行工作区的屏幕截图 我写了这个脚本 但它需要屏幕截图 但只有背景 并忽略选定
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • React 中的 Reconciliation 详解

    我是 React JS 的新手 谁能准确解释和解是如何运作的 我尝试从 React 官方网站上理解它 但没有得到它 我是这样理解的 您会同意 React 使用组件使事情变得简单且更快 通过 JSX 我们可以让用户定义的组件变得更容易 一天结
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • JavaScript推送函数中的动态变量

    我在 JavaScript 中使用推送功能 var chartData for var i 0 i lt 3 i chartData push date new Date year s mon s date s hr s min s sec
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下

随机推荐

  • 我如何获取 MSMQ 队列上的所有可用消息

    处理队列中当前所有消息的最佳方法是什么 我们有一个包含大量非常小的消息的队列 我想做的是读取所有当前消息 然后将它们发送到线程池进行处理 我似乎找不到任何好的资源来向我展示如何创建一个简单的方法来返回 IEnumerable 例如 Than
  • Python set 类、float 和 int 求值

    没有看到具体的实现细节set Class但我认为这个问题的答案就在某个地方 Python 赋值基本上评估右值并使用标识符作为引用对象来指向类对象 集合也是如此 即它们是抽象数据结构或引用对象的 集合 集合不允许重复 当我创建一个集合时 如下
  • 移动 Chrome 在滚动时触发调整大小事件

    我在 Galaxy S4 Android 4 2 2 上使用 Chrome 移动浏览器 由于某种原因 每次向下滚动页面时 它都会触发一个调整大小事件 该事件通过 jquery cycle2 幻灯片中的图像缩放进行验证 知道为什么会发生这种情
  • ggplot2:从图中删除未使用的因子水平组合的方面(facet_grid)

    我想有选择地从多面 ggplot2 图中删除不必要的多面 我查看了这个问题 但不知道该怎么做 也许那里的建议现在已经过时了 将空图添加到ggplot2中的facet wrap https stackoverflow com question
  • 如何拟合余弦函数?

    I wrote a python function to get the parameters of the following cosine function param Parameters param add amp value am
  • 使用 igraph (R) 组合入射顶点的属性来创建边属性

    对于图中的每条边 我想添加一个数字属性 权重 它是事件顶点属性 概率 的乘积 我可以通过在边缘上循环来做到这一点 那是 for i in E G ind lt V G inc i p lt get vertex attribute G na
  • 未捕获(承诺中):错误:运行时编译器未加载 Angular 8

    我正在尝试从 JSON 文件加载路由 路由中还有一个延迟加载的模块 一切都按预期工作 直到代码在 aot 模式下的 ng build prod 中运行 当我尝试转到延迟加载模块链接时 出现以下错误 代码如下 应用程序路由模块 ts impo
  • 如何获取trait对象的地址?

    如何获取特征对象的地址 我试过这个 fn func fn main let boxed func Box
  • 如何使用 Imagemagick 的转换工具将 .tiff/.bmp 转换为 JPEG-XR?

    我正在使用convertimagemagick 的工具 用于将图像转换为 jpeg xr 格式 我在 debian linux 下使用最新版本 ImageMagick 6 8 6 8 问题是convert format jxr or con
  • Xcode 自动完成功能在 Swift Playgrounds 的 Sources 文件夹中不起作用

    我正在开发一个 Swift Playground 它在 Sources 文件夹中与主文件一起包含多个文件 当我在主文件中键入某些内容 例如 UI 时 我会得到预期的自动完成建议 但是 当我在 Sources 文件夹中的文件中执行相同操作时
  • 从WebView中获取当前页面的URL

    我有一个包含书籍收藏的链接 例如www bookstore com 我从中选择一本书 带有 URLwww bookstore com book1 epub 当用户单击该书的下载按钮时 应该将其下载到我的图书馆 我已经完成了下载部分 但令我困
  • 跳过错误“文档上次打开时发生严重错误”

    是否可以跳过错误 文档上次打开时发生严重错误 我使用 Excel 打开 Word 文件 我想防止出现这种情况 例如电脑在运行宏时重新启动 后来Word认为文件有问题 但我始终确信我的模板文件没问题 我使用只读方法 跳过意味着用 VBA 选择
  • 使用 log4j 记录到数据库

    由于在 log4j 中javadoc http logging apache org log4j 1 2 apidocs org apache log4j jdbc JDBCAppender html is 警告 这个版本的 JDBCApp
  • 使用 Bottle 将列表从 python 传递到 js 的最佳方法是什么?

    我使用 Bottle 作为 Web 服务器 需要将 python 列表传递给 javascript 当我只执行 myList 时 Bottle 会对列表中的字符串转义单引号并将其显示为 039 反过来 JS 对它所得到的结果也不是很满意 我
  • 嵌入式二进制验证实用程序错误

    从昨天开始 Xcode 在尝试在我的 iPhone 上运行我的 WatchKit 应用程序时做了一些愚蠢的事情 它给了我错误 嵌入式二进制验证实用程序错误 错误 警告 是一个目录 它不是很有帮助 而且似乎在抱怨我的 Watchkit 扩展目
  • 如何在maven配置中正确指定jcenter存储库?

    在 Gradle 中 我只需添加 repositories jcenter 在 maven pom xml 中执行相同操作的最简单且正确的方法是什么 或者我在哪里可以获得 jcenter 存储库的正确 url 您必须像下面这样定义setti
  • (何时)m2crypto 会移植到 Python3 吗?

    m2crypto 是否正在向 Python3 移植 我将开始一个需要跨平台 跨语言加密的新玩具项目 m2crypto 看起来像是可行的方法 但我宁愿使用 Py3 以避免必须在任何地方显式转换为 UTF8 该库的移植是否正在进行中 代码位于h
  • 升级到 OS X Mavericks 后 Python 出现奇怪问题

    将我的 OS X Lion 升级到 Mavericks 后 我遇到了一些奇怪的问题 起初 它给了我分段故障 or 总线错误 经过一番搜索后 我发现它与readline图书馆 该解决方案描述为bugs python org curl O ht
  • alpine 包 py-pip 丢失

    我尝试使用 Docker compose 文件在我的 alpine 中安装 python pip 但出现以下错误 ERROR unsatisfiable constraints py pip missing required by worl
  • React 中的类变量与 ES6

    这个问题可能已经在其他地方得到了回答 但在标记为重复之前 请帮助我解决这个问题 我指的是使用react和d3的以下codepen https codepen io swizec pen oYNvpQ https codepen io swi