react.createelement方法使用详解-ag捕鱼王app官网

当前位置:ag捕鱼王app官网 > > web前端 > react >

react.createelement方法使用详解

作者:迹忆 最近更新:2022/11/19 浏览次数:

大家看到createelement方法,自然就想到了document.createelement()了。没错,这两个方法的名字是一样的。但是,这里我们要介绍的是react.createelement()而不是document.createelement()。

下面我们直接进入正题

react.createelement

首先我们看官方给出的解释

reactelement createelement(
  string/reactclass type,
  [object props],
  [children ...]
)

react.createelement方法创建并返回一个给定类型的reactelement元素。type参数可以是一个html标签名称字符串,也可以是一个reactclasss。这个type参数对于createelement来说是必须的。第二个参数是该标签的属性,这个参数是可选的。第三个参数是该元素的子节点,同样也是可选的。

下面我们分别就第一个参数类型来做简单的介绍。

type参数 为html标签名称

type参数可以是一个html标签名称,也可以是一个reactclass。首先我们看使用html标签的例子。这个例子来自ag捕鱼王app官网,接下来所有的例子都是围绕这个例子进行改写。

例一

var child1 = react.createelement('li', null, 'first text content');
var child2 = react.createelement('li', null, 'second text content');
var child3 = react.createelement('li', null, 'third text content');
var root = react.createelement('ul', { classname: 'my-list' }, child1, child2, child3);
reactdom.render(
        root,
        document.getelementbyid('content')
);

这个例子很简单,第一个参数是html标签的名称ul和li。我们看前三个createelement的第二个参数和第三个参数,因为上面不需要第二个参数,但是需要有第三个参数作为li的文本内容,也就是li的子内容,所以第二个参数赋值为null。

但是对于创建ul元素的createelement方法来说,同样第一个参数是html标签名称ul,第二个参数是一个props对象{ classname: 'my-list'}。当然这里我们也可以添加其他的属性例如{ classname: 'my-list', name:’ulname’}。这些属性可以通过this.props.name来调用。但是奇怪的是第二个参数以后有多个参数,这怎么解释。是不是createelement不止三个参数,从第二个参数往后,该节点有多少个子节点那就有多少个参数。可以这么认为,但是我们对上面的例子稍加改造就可以看出其实说createelement有三个参数也没有问题。

例二

var child1 = react.createelement('li', null, 'first text content');
var child2 = react.createelement('li', null, 'second text content');
var child3 = react.createelement('li', null, 'third text content');
var root = react.createelement('ul', { classname: 'my-list' }, [child1, child2, child3]);
reactdom.render(
        root,
        document.getelementbyid('content')
);

我们将第二个参数以后的参数都放在数组里,这样就可以认为第三个参数是一个数组,数组中的元素就是该节点的所有子节点。

从这我们可以看出其实react的使用非常的灵活。

type参数 为reactclass

我们看上面的例子,type参数为html标签名称。使用方法其实挺简单的,需要注意的是第二个参数和第三个参数。下面我们来看一下type类型为reactclass的使用方法。

例三

var cli = react.createclass({
    render:function(){
        return (
               


  •                 {this.props.text}
                   

  •         )
        }
    })
    var child1 = react.createelement(cli, {key:'f',text:'first text content'});
    var child2 = react.createelement(cli, {key:'s',text:'second text content'});
    var child3 = react.createelement(cli, {key:'t',text:'third text content'});
    var root = react.createelement('ul', { classname: 'my-list' }, [child1, child2, child3]);
    reactdom.render(
            root,
            document.getelementbyid('content')
    );

    在这里我们看第一个参数cli就是createclass的返回值。需要注意的是,对于前三个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

      . see https://fb.me/react-warning-keys for more information.

      当然如果上述例子中我们只创建了一个li元素,没有child2和child3,只有child1,那第二个参数的key属性也得指定,否则同样也是会报如上的警告。

      对于例三我们也可以进行如下的改写

      例四

      var cli = react.createclass({
          render:function(){
              return (
                     


    •                 {this.props.children}
                     

    •         )
          }
      })
      var child1 = react.createelement(cli, {key:'f'},'first text content');
      var child2 = react.createelement(cli, {key:'s'},'second text content');
      var child3 = react.createelement(cli, {key:'t'},'third text content');
      var root = react.createelement('ul', { classname: 'my-list' }, [child1, child2, child3]);
      reactdom.render(
              root,
              document.getelementbyid('content')
      );

      同样在createelement中指定第三个参数,在createclass中使用this.props.children进行引用。

      上面就是react.createelement的使用方法,可以看出其使用方式非常灵活,在实际生产中我们应该选择适合于自己的方式方便快捷的进行开发。

    上一篇:

    下一篇:react入门 createclass使用说明

    转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

    本文地址:

    相关文章

    修复 java 中的 nosuchelementexception 错误

    发布时间:2023/11/13 浏览次数:178 分类:java

    本文介绍 java 中的 nosuchelementexception 错误。异常是在程序执行期间发生的事件。发生异常时会影响正常的程序流程,导致程序异常终止。本文将讨论 java.util.nosuchelementexception 以及如何在 java 中

    在 java 中使用 scanner 时没有此类元素异常

    发布时间:2023/07/13 浏览次数:81 分类:java

    本篇文章将介绍如何在 java 中使用 scanner 时解决 nosuchelementexception 错误。在 java 中使用 scanner 时没有此类元素异常 scanner 类用于在 java 程序中获取用户输入。 它使用多种实用方法,如 next()、

    node.js 与 react js 的比较

    发布时间:2023/03/27 浏览次数:173 分类:node.js

    本文比较和对比了两种编程语言,node.js 和 react。react 和 node.js 都是开源 javascript 库的示例。 这些库用于构建用户界面和服务器端应用程序。

    angular 中的 elementref

    发布时间:2023/03/24 浏览次数:126 分类:angular

    本教程演示了什么是 elementref 以及如何在 angular 中使用它。

    扫一扫阅读全部技术教程

    社交账号
    • https://www.github.com/onmpw
    • qq:1244347461

    最新推荐

    教程更新

    热门标签

    扫码一下
    查看教程更方便
    网站地图