"React is undefined" CycleJs 应用程序出错
"React is undefined" error in CycleJs app
我正在试验 cycle.js 和 webpack。我有以下 index.js
文件,它几乎是我在 cycle.js 文档中找到的内容的副本。
import Cycle from '@cycle/core';
import {makeDOMDriver, hJSX} from '@cycle/dom';
function main(drivers) {
return {
DOM: drivers.DOM.select('input').events('click')
.map(ev => ev.target.checked)
.startWith(false)
.map(toggled =>
<div>
<input type="checkbox" /> Toggle me
<p>{toggled ? 'ON' : 'off'}</p>
</div>
)
};
}
const drivers = {
DOM: makeDOMDriver('#app')
};
Cycle.run(main, drivers);
这是我的 index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Cycle.js checkbox</title>
</head>
<body>
<div id="app"></div> <!-- Our container -->
<script src="./dist/bundle.js"></script>
</body>
</html>
我正在使用 webpack 在 dist
文件夹中生成 bundle.js
。当我通过在 chrome 中打开 index.html
来 运行 应用程序时,我在 chrome 控制台
中收到以下错误
cycle.js:51ReferenceError: React is not defined
at index.js:10
at tryCatcher (rx.all.js:63)
at InnerObserver.next (rx.all.js:5598)
at InnerObserver.Rx.internals.AbstractObserver.AbstractObserver.onNext (rx.all.js:1762)
at InnerObserver.tryCatcher (rx.all.js:63)
at AutoDetachObserverPrototype.next (rx.all.js:11810)
at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onNext (rx.all.js:1762)
at ConcatObserver.next (rx.all.js:3466)
at ConcatObserver.Rx.internals.AbstractObserver.AbstractObserver.onNext (rx.all.js:1762)
at ConcatObserver.tryCatcher (rx.all.js:63)
不确定我在 cycle.js 应用程序中这个看似简单的第一步中做错了什么。
您需要为 JSX 设置正确的编译指示,否则 JSX 将被错误地转换。
您可以将正确的 pragma 添加到 .js
文件的顶部:
/** @jsx hJSX */
或者把它放在你的 babel 配置中:
[ "transform-react-jsx", { "pragma": "hJSX" } ]
我正在试验 cycle.js 和 webpack。我有以下 index.js
文件,它几乎是我在 cycle.js 文档中找到的内容的副本。
import Cycle from '@cycle/core';
import {makeDOMDriver, hJSX} from '@cycle/dom';
function main(drivers) {
return {
DOM: drivers.DOM.select('input').events('click')
.map(ev => ev.target.checked)
.startWith(false)
.map(toggled =>
<div>
<input type="checkbox" /> Toggle me
<p>{toggled ? 'ON' : 'off'}</p>
</div>
)
};
}
const drivers = {
DOM: makeDOMDriver('#app')
};
Cycle.run(main, drivers);
这是我的 index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Cycle.js checkbox</title>
</head>
<body>
<div id="app"></div> <!-- Our container -->
<script src="./dist/bundle.js"></script>
</body>
</html>
我正在使用 webpack 在 dist
文件夹中生成 bundle.js
。当我通过在 chrome 中打开 index.html
来 运行 应用程序时,我在 chrome 控制台
cycle.js:51ReferenceError: React is not defined
at index.js:10
at tryCatcher (rx.all.js:63)
at InnerObserver.next (rx.all.js:5598)
at InnerObserver.Rx.internals.AbstractObserver.AbstractObserver.onNext (rx.all.js:1762)
at InnerObserver.tryCatcher (rx.all.js:63)
at AutoDetachObserverPrototype.next (rx.all.js:11810)
at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onNext (rx.all.js:1762)
at ConcatObserver.next (rx.all.js:3466)
at ConcatObserver.Rx.internals.AbstractObserver.AbstractObserver.onNext (rx.all.js:1762)
at ConcatObserver.tryCatcher (rx.all.js:63)
不确定我在 cycle.js 应用程序中这个看似简单的第一步中做错了什么。
您需要为 JSX 设置正确的编译指示,否则 JSX 将被错误地转换。
您可以将正确的 pragma 添加到 .js
文件的顶部:
/** @jsx hJSX */
或者把它放在你的 babel 配置中:
[ "transform-react-jsx", { "pragma": "hJSX" } ]