首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迁移到预动作to

迁移到预动作to
EN

Stack Overflow用户
提问于 2017-02-16 14:23:21
回答 1查看 1.5K关注 0票数 5

我有一个通用的react应用程序,服务器端是在babel中构建的,客户端包是在webpack中构建的。我读过preact-compact文档,建议在.babelrc中添加此文档,以便使用babel构建:

代码语言:javascript
复制
{
  "plugins": [
    [
      "transform-react-jsx",
      {
        "pragma": "h"
      }
    ],
    [
      "module-resolver",
      {
        "root": [
          "."
        ],
        "alias": {
          "react": "preact-compat",
          "react-dom": "preact-compat"
        }
      }
    ]
  ],
  "presets": [
    "react"
  ]
}

对于webpack

代码语言:javascript
复制
{
  "resolve": {
    "alias": {
      "react": "preact-compat",
      "react-dom": "preact-compat"
    }
  }
}

但是在构建之后,我得到了一个错误的h is not defined

如何迁移到preact以获得通用的react应用程序

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 15:16:19

但是在构建之后,我得到了一个错误"h未定义“。

您将transform-react-jsx插件添加到您的babel配置中。

代码语言:javascript
复制
["transform-react-jsx", { "pragma":"h" }]

这将告诉babel如何传输您的JSX代码。为此,函数h需要在作用域内,这意味着您需要在使用JSX的每个文件中导入它。

代码语言:javascript
复制
import { h } from 'preact';

不必更改所有使用React的代码,您可以使用preact-compat和别名reactreact-dompreact-compat,就像正确地使用babel-plugin-module-resolver或webpack一样。这样,您就可以在代码中使用reactreact-dom,而preact-compat则为您做剩下的工作。

为了使其正常工作,您必须从babel配置中删除["transform-react-jsx", { "pragma":"h" }]

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42276609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档