ReactJS网站实现错误,返回多个元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ReactJS网站实现错误,返回多个元素相关的知识,希望对你有一定的参考价值。

我尝试了reactjs.org下面的代码示例01并且它工作正常,但是当我尝试添加多个元素(示例02)以返回此组件时它不起作用。

例01

'use strict';

const e = React.createElement;

class LikeButton extends React.Component {
  constructor(props) {
    super(props);
    this.state = { liked: false };
  }


  render() {
    if (this.state.liked) {
      return 'You liked this.';
    }

    return e( 
        'button',
          { onClick: () => this.setState({ liked: true }) },
        'Like'  
    );
  }
}

const domContainer = document.querySelector('#like_button_container');
ReactDOM.render(e(LikeButton), domContainer);

例02

'use strict';

const e = React.createElement;

class LikeButton extends React.Component {
  constructor(props) {
    super(props);
    this.state = { liked: false };
  }


  render() {
    if (this.state.liked) {
      return 'You liked this.';
    }

    return e(
        <div> 
          <a href="#" >Login</a>
          <a href="#" >Logout</a>
        </div>
    );
  }
}

const domContainer = document.querySelector('#like_button_container');
ReactDOM.render(e(LikeButton), domContainer);

PS:我是反应犹他的新手,并感谢任何帮助。谢谢。

答案

你用错误的语法调用createElement;这是签名:

React.createElement(
  type,
  [props],
  [...children]
)

在你的情况下,正确的电话会是

return e(
  'div',
  null,
  [
    e('a', { href: '#' }, 'Login'), 
    e('a', { href: '#' }, 'Logout')
  ]
);

但是,您可以直接返回html而无需使用createElement,只需将渲染更改为:

return (
  <div> 
    <a href="#" >Login</a>
    <a href="#" >Logout</a>
  </div>
);

以上是关于ReactJS网站实现错误,返回多个元素的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS - setState 到多个元素

在 Reactjs 中切换多个元素的状态

ReactJS 不编译 boostrap 组件。只返回 HTML 组件。 0xerr011d

REACTJS 给出以下错误:TypeError: navigate.push is not a function

替换从 VAST 代码返回的多个 HLS VOD 片段

片段之间的共享元素转换