为了账号安全,请及时绑定邮箱和手机立即绑定

插入 HTML 的 React 代码似乎不起作用

插入 HTML 的 React 代码似乎不起作用

小怪兽爱吃肉 2023-09-11 14:45:32
我是 React 新手,我真的不知道如何让它工作。我只是想在 HTML 中添加这个简单的代码,但它似乎不起作用,我不知道为什么这是我的代码const element = React.createElement;class Menu extends React.Component {  render() {    return <h1>Hello World! < /h1>  }}const domContainer = document.querySelector('#menu_js');ReactDOM.render(element(Menu), domContainer);
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

你想在没有 JSX 的情况下实现它吗?没有 JSX 意味着你不需要 Babel 等。


我假设这一点,只是因为您为 React.createElement.


如果是这样你可以这样做:


const element = React.createElement;

class Menu extends React.Component {

  render() {

    return element('h1',null,'Hello World!');

  }

}

const domContainer = document.querySelector('#menu_js');

ReactDOM.render(element(Menu), domContainer);

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<div id="menu_js"></div>


或者-如果你想使用 JSX


然后你可以这样做(只需启用 Babel):


const element = React.createElement;

class Menu extends React.Component {

  render() {

    return <h1>Hello World!</h1>;

  }

}

const domContainer = document.querySelector('#menu_js');

ReactDOM.render(element(Menu), domContainer);

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<div id="menu_js"></div>


PS 我正在开发一个库,它允许您在没有 JSX 的情况下使用“类似 d3”的语法创建 React 元素。(https://github.com/Alex-ley/react-kopplung)


如果您有兴趣,您的示例可能如下所示:


const element = React.createElement;

class Menu extends React.Component {

  render() {

    const returnObj = new ReactKopplung();    

    returnObj

      .setRoot('h1') /* Or .setRoot('<>') for a fragment */

        .setText('hello world!');

            

    return returnObj.rootNode().render();

  }

}

const domContainer = document.querySelector('#menu_js');

ReactDOM.render(element(Menu), domContainer);

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<script src="https://cdn.jsdelivr.net/gh/Alex-ley/react-kopplung@v.0.1.0/ReactKopplung.js"></script>

<div id="menu_js"></div>


查看完整回答
反对 回复 2023-09-11
?
largeQ

TA贡献2039条经验 获得超7个赞

您不需要整个类来渲染一个简单的元素:


const Menu = React.createElement('h1', {}, 'Hello World!');


ReactDOM.render(Menu, document.getElementById('menu_js'));


查看完整回答
反对 回复 2023-09-11
  • 2 回答
  • 0 关注
  • 49 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信