使用preact-compt时出错未捕获(在承诺中)ReferenceError:未定义h

时间:2019-04-05 16:02:51

标签: reactjs preact

我想在我的preact应用中使用一些与React兼容的软件包。我已经按照说明安装了preact-compat。现在,当我向应用程序添加一个React组件时,我仍然需要从preact导入“ h”,否则会出现错误: 未捕获(承诺)ReferenceError:未定义h。例如:

import React, { Component } from 'react';
import { render } from 'react-dom';
import { h } from 'preact';

export default class TestForm extends Component {

  constructor(props) {
    super(props);
  }

  render(props, state) { console.log('TestForm::render');
    return (
      <div>Hello</div>
    );
  }

}

如果我不从react导入'h',则会发生错误。我该如何解决?

我正在使用Browserify和Babel并进行了以下更改: 在package.json中:

"aliasify": {
    "aliases": {
        "react": "preact-compat",
        "react-dom": "preact-compat",
        // Not necessary unless you consume a module using `createClass`
        "create-react-class": "preact-compat/lib/create-react-class",
        // Not necessary unless you consume a module requiring `react-dom-factories`
        "react-dom-factories": "preact-compat/lib/react-dom-factories"
    }
}

以及.babelrc中的

"plugins": [
    ["module-resolver", {
    "root": ["."],
    "alias": {
        "react": "preact-compat",
        "react-dom": "preact-compat",
        // Not necessary unless you consume a module using `createClass`
        "create-react-class": "preact-compat/lib/create-react-class",
        // Not necessary unless you consume a module requiring `react-dom-factories`
        "react-dom-factories" "preact-compat/lib/react-dom-factories"
    }
    }]
],
"presets": [
    "react"
]

1 个答案:

答案 0 :(得分:0)

将此添加到babel配置

plugins: [
     ["@babel/transform-react-jsx", { pragma: "h" }]
 ],