如何在不进行任何捆绑或转译的情况下使用 React

问题描述 投票:0回答:1

我想在浏览器上使用 React 作为原生库,而不需要任何额外的工具,例如 webpack 或 Babel。在开发过程中,我厌倦了将 React 代码转换为常规 JavaScript 代码。这也让我可以创建一个受益于 ES6 模块的 React 应用程序,因为它们也受到本机支持,并且不需要任何额外的工具,例如 webpack 或 Babel。

我研究过 React.createElement 但它不是很用户友好。这是 React.createElement 的示例

React.createElement('div', null, 'Hello');
// <div>Hello</div>

我想使用React的所有功能,包括钩子

useState
useEffect
等。是否有一个可行的解决方案可以使用React而无需转译或捆绑?

javascript reactjs es6-modules
1个回答
0
投票

有一个无需转译或捆绑即可使用 React 的解决方案。我编写了库 Arche,它为在纯 JavaScript 中使用 React 提供了一个不错的界面。以下是一些示例:

// --- these lines can go inside a global.js file
const ReactElement = Arche(React)
const { Div, P, Button } = ReactElement
const { useState } = React
// ---


const Example = ReactElement(() => {
  const [count, setCount] = useState(0)

  return Div([
    P(`You clicked ${count} times`),
    Button({
      onClick() {
        setCount(count + 1)
      },
    }, 'Click me'),
  ])
})

ReactDOM.render(Example(), document.getElementById('react-root'))
  <html>
    <head>
      <script src="https://unpkg.com/[email protected]/dist/rubico.min.js" crossorigin></script>
      <script src="https://unpkg.com/[email protected]/index.js" crossorigin></script>
      <script src="https://unpkg.com/[email protected]/umd/react.production.min.js" crossorigin></script>
      <script src="https://unpkg.com/[email protected]/umd/react-dom.production.min.js" crossorigin></script>
    </head>
    <body>
      <div id="react-root"></div>
    </body>
  </html>

语法如下:

Arche(React {
  createElement: (type, props?, children?)=>ReactElement,
}, options? {
  styled?: {
    div: function,
    p: funcion,
    span: function,
    // etc
  },
  styledMemoizationCap?: number, // defaults to 1000
}) -> ReactElement
© www.soinside.com 2019 - 2024. All rights reserved.