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 相关文章推荐
js实现ASP分页函数 HTML分页函数
Sep 22 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
May 04 Javascript
点击标签切换和自动切换DIV选项卡
Aug 10 Javascript
node.js下when.js 的异步编程实践
Dec 03 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
Jun 13 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
基于jquery实现弹幕效果
Sep 29 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
Dec 31 Javascript
jQuery鼠标悬停内容动画切换效果
Apr 27 jQuery
vue实现的上拉加载更多数据/分页功能示例
May 25 Javascript
js tab栏切换代码实例解析
Sep 03 Javascript
js+css实现全屏侧边栏
Jun 16 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
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
2018/08/24 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
Python中为什么要用self探讨
2015/04/14 Python
Python绘制七段数码管实例代码
2017/12/20 Python
python实现图片批量压缩程序
2018/07/23 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
详解Python 最短匹配模式
2020/07/29 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
应届生体育教师自荐信
2013/10/03 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
入党介绍人评语
2014/05/06 职场文书
安全施工责任书
2014/08/25 职场文书
委托书怎样写
2014/08/30 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
单位介绍信格式范文
2015/05/04 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js