react组件基本用法示例小结


Posted in Javascript onApril 27, 2020

本文实例讲述了react组件基本用法。分享给大家供大家参考,具体如下:

组件间传值:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>test</title>
</head>
<body>
<div id="app">
 
</div>
<script src="../js/react.production.min.js"></script><!--react核心库-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react扩展库-->
<script src="../js/babel.min.js"></script><!--解析JSX语法-->
<script type="text/babel">
  class Com extends React.Component {
    click = ()=>{
      // console.log(this.input);
      // console.log(this.p.innerText);
      console.log(this.refs.my.value);//父组件访问子组件用refs
    };
 
    render() {
      return (
        <div>
          <input type="text" ref={(input)=>{this.input=input}}/>
          <p ref={(p)=>{this.p=p}}>我是段落</p>
          <input type="text" ref="my"/>
          <button onClick={this.click}>点击</button>
        </div>
      );
    }
  }
 
  ReactDOM.render(<Com/>,document.getElementById('app'));
</script>
</body>
</html>

列表:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>test</title>
</head>
<body>
<div id="app"></div>
<script src="../js/react.production.min.js"></script><!--react核心库-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react扩展库-->
<script src="../js/babel.min.js"></script><!--解析JSX语法-->
<script type="text/babel">
  class Add extends React.Component {
    click = ()=>{
      this.props.allAdd(this.input.value);
    };
    render() {
      const {length} = this.props;
      return (
        <div>
          <input type="text" ref={(input)=>{this.input=input}}/>
          <button onClick={this.click}>add{length}</button>
        </div>
      )
    }
  }
 
  class List extends React.Component {
    render() {
      const {list} = this.props;
      return (
        <div>
          <ul>
            {
              list.map((v,i)=>{
                return <li key={i}>{v}</li>
              })
            }
          </ul>
        </div>
      )
    }
  }
 
  class App extends React.Component {
    state = {
      list:['吃饭','睡觉','打游戏','游泳']
    };
    add = (value)=>{
      const {list} = this.state;//获取原先的list
      list.unshift(value);//将添加的值传入list
      this.setState(list);//重新设置list
    };
    render() {
      const {list} = this.state;//获取list
      return (
        <div>
          <Add allAdd={this.add} length={list.length}/>
          <List list={list} />
        </div>
      )
    }
  }
 
  ReactDOM.render(<App />,document.getElementById('app'));
</script>
</body>
</html>

受控组件和非受控组件:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>test</title>
</head>
<body>
<div id="app"></div>
<script src="../js/react.production.min.js"></script><!--react核心库-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react扩展库-->
<script src="../js/babel.min.js"></script><!--解析JSX语法-->
<script type="text/babel">
  class Com extends React.Component {
    state = {
      age:''
    };
    //非受控组件 不受state控制
    click = () => {
      console.log(this.input.value);
    };
    change = (event)=>{
      console.log(event.target.value);
      this.setState({
        age: event.target.value
      })
    };
    render() {
      const {age} = this.props;
      return (
        <div>
          姓名:<input type="text" ref={(input)=>{this.input=input}}/>
          <button onClick={this.click}>获取姓名</button>
          年龄:<input type="text" value={age} onChange={this.change}/>
        </div>
      );
    };
  }
  ReactDOM.render(<Com />,document.getElementById('app'));
</script>
</body>
</html>

组件生命周期:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Test</title>
</head>
<body>
<div id="app"></div>
<script src="../js/react.production.min.js"></script><!--react核心库-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react扩展库-->
<script src="../js/babel.min.js"></script><!--解析JSX语法-->
<script type="text/babel">
  class Com extends React.Component {
    state = {
      msg:123
    };
 
    sing() {
      return new Promise((resolve,reject)=>{
        setTimeout(()=>{
          resolve('唱一首歌');
        },1000);
      })
    };
 
    async get() {
      await this.sing().then((res)=>{
        console.log(res);
      });
    };
 
    componentWillMount() {
      //will会先执行,但不一定先执行完毕
      console.log('之前');
      // this.get();
    }
 
    componentDidMount() {
      //进行ajax操作,获取后台数据
      console.log('之后');
    }
 
    shouldComponentUpdate(nextProps, nextState) {
      const {msg} = this.state;
 
      //如果没有
      if ({msg} !== nextState) {
        return true;
      }
      console.log('更新');
      return false;
    }
 
    componentWillUpdate() {
      console.log('更新之前');
    }
 
    componentDidUpdate() {
      console.log('更新之后');
      //再次获取数据
    }
 
    click = ()=>{
      this.setState({
        msg: 234
      })
    };
 
    render() {
      console.log('render');
      const {msg} = this.state;
      return(
        <div>
          <h1>{msg}</h1>
          <button onClick={this.click}>更新</button>
        </div>
      )
    }
  }
 
  ReactDOM.render(<Com />,document.getElementById('app'));
</script>
</body>
</html>

希望本文所述对大家react程序设计有所帮助。

Javascript 相关文章推荐
sina的lightbox效果。
Jan 09 Javascript
Use Word to Search for Files
Jun 15 Javascript
JS面向对象编程浅析
Aug 28 Javascript
js获取页面description的方法
May 21 Javascript
JavaScript代码性能优化总结篇
May 15 Javascript
AngularJS  $modal弹出框实例代码
Aug 24 Javascript
ES6记录异步函数的执行时间详解
Aug 31 Javascript
Javascript农历与公历相互转换的简单实例
Oct 09 Javascript
Bootstrap基本布局实现方法详解
Nov 25 Javascript
纯js实现悬浮按钮组件
Dec 17 Javascript
javascript 玩转Date对象(实例讲解)
Jul 11 Javascript
在 webpack 中使用 ECharts的实例详解
Feb 05 Javascript
react基本安装与测试示例
Apr 27 #Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
Apr 27 #Javascript
JS浏览器BOM常见操作实例详解
Apr 27 #Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
Apr 27 #Javascript
js HTML DOM EventListener功能与用法实例分析
Apr 27 #Javascript
JS严格模式原理与用法实例分析
Apr 27 #Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
Apr 27 #Javascript
You might like
农民C键的运用技巧
2020/03/04 星际争霸
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
PHP 实现重载
2021/03/09 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
Python基础入门之seed()方法的使用
2015/05/15 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Python字符串处理实现单词反转
2017/06/14 Python
Python有序查找算法之二分法实例分析
2017/12/11 Python
替换python字典中的key值方法
2018/07/06 Python
kali中python版本的切换方法
2019/07/11 Python
Python的垃圾回收机制详解
2019/08/28 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
世界经理人咨询有限公司面试
2014/09/23 面试题
会计实习生工作总结的自我评价
2013/10/07 职场文书
初三班主任寄语大全
2014/04/04 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
大学生见习报告总结
2014/11/04 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
如何解决php-fpm启动不了问题
2021/11/17 PHP