浅谈React.createElement()方法

超、凢脫俗 2022-06-17 09:42 884阅读 0赞

document有createElement()方法,React也有createElement()方法,下面就来介绍React的createElement()方法。

  1. var reactElement = ReactElement.createElement(
  2. ... // 标签名称字符串/ReactClass,
  3. ... // [元素的属性值对对象],
  4. ... // [元素的子节点]
  5. )

1、参数:

1)第一个参数:可以是一个html标签名称字符串,也可以是一个ReactClass(必须);

2)第二个参数:元素的属性值对对象(可选),这些属性可以通过this.props.*来调用;

3)第三个参数开始:元素的子节点(可选)。

2、返回值:

一个给定类型的ReactElement元素

eg1:第一个参数为一个html标签名称字符串

  1. var li1 = React.createElement('li', null, 'First');
  2. var li2 = React.createElement('li', null, 'Second');
  3. var li3 = React.createElement('li', null, 'Third');
  4. var ul = React.createElement('ul', {className: 'list'}, li1, li2, li3);
  5. ReactDOM.render(
  6. ul,
  7. document.getElementById('content')
  8. );

eg2:第一个参数为一个ReactClass

属性值通过this.props.text来调用:

  1. var Li = React.createClass({
  2. render:function(){
  3. return (
  4. <li>{this.props.text}</li>
  5. );
  6. }
  7. })
  8. var li1 = React.createElement(Li, {key:'1',text:'First'});
  9. var li2 = React.createElement(Li, {key:'2',text:'Second'});
  10. var li3 = React.createElement(Li, {key:'3',text:'Third'});
  11. var ul = React.createElement('ul', {className: 'list'}, [li1, li2, li3]);
  12. ReactDOM.render(
  13. ul,
  14. document.getElementById('content')
  15. );

注意:即使只创建一个li元素,createElement第二个参数也要加上key:’value’,value值彼此不相同,如果不指定此属性,虽然也能按照逻辑正常显示,但会报如下的警告:

Warning: Each child in an array or iterator should have a unique “key” prop. Check the top-level render call using

    .

    eg3:第一个参数为一个ReactClass

    属性值通过this.props.children来调用:

    1. var Li = React.createClass({
    2. render:function(){
    3. return (
    4. <li>{this.props.children}</li>
    5. );
    6. }
    7. });
    8. var li1 = React.createElement(Li, {key:'1'}, 'First');
    9. var li2 = React.createElement(Li, {key:'2'}, 'Second');
    10. var li3 = React.createElement(Li, {key:'3'}, 'Third');
    11. var ul = React.createElement('ul', {className: 'list'}, [li1, li2, li3]);
    12. ReactDOM.render(
    13. ul,
    14. document.getElementById('content')
    15. );

发表评论

表情:
评论列表 (有 0 条评论,884人围观)

还没有评论,来说两句吧...

相关阅读

    相关 泛型方法

      以前一直以为如果方法要传泛型必须继承类的泛型,后来发现不用,只需要在返回值前面加个<E>即可。   代码如下: / 组装一个arrayLis

    相关 面向对象方法

    目录 一、面向对象的基本概念 对象、类、实例、消息、方法 二、面向对象的基本特征 封装、继承、多态 三、面向对象的建模 对象模型、动态模型、功能模型 四、面向对象