React 是一个用于构建用户界面的 JAVASCRIPT 库。

React 主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。

React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。

React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。

React 特点

1.声明式设计 −React采用声明范式,可以轻松描述应用。

2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。

3.灵活 −React可以与已知的库或框架很好地配合。

4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。

5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。

6.单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。

可控自定义组件:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script src="js/react.js"></script>
    <script src="js/react-dom.js"></script>
    <script src="js/browser.min.js"></script>
  </head>
  <body>
    <script type="text/babel">
      var Radio=React.createClass({
        getInitialState:function(){
          return {
            value:this.props.defaultValue
          };
        },
        handleChange:function(event){
          if(this.props.onChange){
            this.props.onChange(event);
          }
          this.setState({
            value:event.target.value
          });
        },
        render:function(){
          var children=[];
          var value=this.props.value||this.state.value;
          React.Children.forEach(this.props.children,function(child,i){
            var label=<label key={i}>
              <input type="radio" name={this.props.name} value={child.props.value} checked={child.props.value==value} onChange={this.handleChange}/>
              {child.props.children}
              <br/>
          </label>;
          children.push(label);
          }.bind(this));
          return <span>{children}</span>;
        }
      });
      var MyForm=React.createClass({
        getInitialState:function(){
          return ({my_radio:"B"});
        },

        handleChange:function(event){
          this.setState({
            my_radio:event.target.value
          });
        },
        submitHandler:function(event){
          event.preventDefault();
          alert(this.state.my_radio);
        },
        render:function(){
          return (
            <form onSubmit={this.submitHandler}>
            <Radio value={this.state.my_radio} name="my_radio" onChange={this.handleChange}>
              <option value="A">First option</option>
              <option value="B">Second option</option>
              <option value="C">Third option</option>
            </Radio>
            <button type="submit">Speak</button>
            </form>
          )
        }
      });

      ReactDOM.render(<MyForm></MyForm>,document.body);
    </script>
  </body>
</html>

不可控的自定义组件:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script src="js/react.js"></script>
    <script src="js/react-dom.js"></script>
    <script src="js/browser.min.js"></script>
  </head>
  <body>
    <script type="text/babel">
      var Radio=React.createClass({
        getInitialState:function(){
          return {
            value:this.props.defaultValue
          };
        },
        handleChange:function(event){
          if(this.props.onChange){
            this.props.onChange(event);
          }
          this.setState({
            value:event.target.value
          });
        },
        render:function(){
          var children=[];
          var value=this.props.value||this.state.value;
          React.Children.forEach(this.props.children,function(child,i){
            var label=<label>
              <input type="radio" name={this.props.name} value={child.props.value} checked={child.props.value==value} onChange={this.handleChange}/>
              {child.props.children}
              <br/>
          </label>;
          children['label' i]=label;
          }.bind(this));
          return <span>{children}</span>;
        }
      });
      var MyForm=React.createClass({
        handleSubmit:function(event){
          event.preventDefault();
          alert(this.refs.radio.state.value);
        },
        render:function(){
          return (
            <form onSubmit={this.handleSubmit}>
            <Radio ref="radio" name="my_radio" defaultValue="B">
              <p value="A">First</p>
              <option value="B">Second option</option>
              <option value="C">Third option</option>
            </Radio>
            <button type="submit">Speak</button>
            </form>
          )
        }
      });

      ReactDOM.render(<MyForm></MyForm>,document.body);
    </script>
  </body>
</html>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script src="js/react.js"></script>
    <script src="js/react-dom.js"></script>
    <script src="js/browser.min.js"></script>
  </head>
  <body>
    <script type="text/babel">
      var Radio=React.createClass({
        getInitialState:function(){
          return {
            value:this.props.defaultValue
          };
        },
        handleChange:function(event){
          if(this.props.onChange){
            this.props.onChange(event);
          }
          this.setState({
            value:event.target.value
          });
        },
        render:function(){
          var children=[];
          var value=this.props.value||this.state.value;
          React.Children.forEach(this.props.children,function(child,i){
            var label=<label>
              <input type="radio" name={this.props.name} value={child.props.value} checked={child.props.value==value} onChange={this.handleChange}/>
              {child.props.children}
              <br/>
          </label>;
          children['label' i]=label;
          }.bind(this));
          return <span>{children}</span>;
        }
      });
      var MyForm=React.createClass({
        handleSubmit:function(event){
          event.preventDefault();
          alert(this.refs.radio.state.value);
        },
        render:function(){
          return (
            <form onSubmit={this.handleSubmit}>
            <Radio ref="radio" name="my_radio" defaultValue="B">
              <p value="A">First</p>
              <option value="B">Second option</option>
              <option value="C">Third option</option>
            </Radio>
            <button type="submit">Speak</button>
            </form>
          )
        }
      });

      ReactDOM.render(<MyForm></MyForm>,document.body);
    </script>
  </body>
</html>

总结

以上所述是小编给大家介绍的ReactJS中的自定义组件实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

ReactJS中的自定义组件实例代码的更多相关文章

  1. ReactJs快速入门教程(精华版)

    React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.这篇文章主要介绍了ReactJs快速入门教程(精华版)的相关资料,需要的朋友可以参考下

  2. Vue3 SFC 和 TSX 方式自定义组件实现 v-model的详细过程

    v-model 是 vue3 中的一个内置指令,很多表单元素都可以使用这个属性,如 input、checkbox 等,咱可以在自定义组件中实现 v-model,这篇文章主要介绍了Vue3 SFC 和 TSX 方式自定义组件实现 v-model,需要的朋友可以参考下

  3. Vue 自定义组件 v-model 使用详解

    这篇文章主要介绍了Vue 自定义组件 v-model 使用介绍,包括vue2中使用和vue3中使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  4. vue在自定义组件上使用v-model和.sync的方法实例

    自定义组件的v-model和.sync修饰符其实本质上都是vue的语法糖,用于实现父子组件的"数据"双向绑定,下面这篇文章主要给大家介绍了关于vue在自定义组件上使用v-model和.sync的相关资料,需要的朋友可以参考下

  5. 再次谈论React.js实现原生js拖拽效果引起的一系列问题

    React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.本文给大家介绍React.js实现原生js拖拽效果,需要的朋友一起学习吧

  6. yii2高级应用之自定义组件实现全局使用图片上传功能的方法

    这篇文章主要介绍了yii2高级应用之自定义组件实现全局使用图片上传功能的方法,结合实例形式分析了Yii2自定义组件实现图片上传的相关步骤与操作技巧,需要的朋友可以参考下

  7. 浅析JS中什么是自定义react数据验证组件

    我们在做前端表单提交时,经常会遇到要对表单中的数据进行校验的问题。这篇文章主要介绍了js中什么是自定义react数据验证组件,需要的朋友可以参考下

  8. 详解使用webpack+electron+reactJs开发windows桌面应用

    这篇文章主要介绍了详解使用webpack+electron+reactJs开发windows桌面应用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. Reactjs + Nodejs + Mongodb 实现文件上传功能实例详解

    今天是使用 Reactjs + Nodejs + Mongodb 实现文件上传功能,前端我们使用 Reactjs + Axios 来搭建前端上传文件应用,后端我们使用 Node.js + Express + Multer + Mongodb 来搭建后端上传文件处理应用,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧

  10. React.js入门实例教程之创建hello world 的5种方式

    React 是近期非常热门的一个前端开发框架。应用非常广泛,接下来通过本文给大家介绍React.js入门实例教程之创建hello world 的5种方式 ,需要的朋友参考下吧

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部