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 相关文章推荐
jQuery UI AutoComplete 使用说明
Jun 20 Javascript
JS实现div内部的文字或图片自动循环滚动代码
Apr 19 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
Nov 26 Javascript
javascript中的return和闭包函数浅析
Jun 06 Javascript
JavaScript检查某个function是否是原生代码的方法
Aug 20 Javascript
浅谈document.write()输出样式
May 07 Javascript
javascript实现动态导入js与css等静态资源文件的方法
Jul 25 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
Aug 23 Javascript
jsp 网站引入外部css或者js失效问题解决
Oct 31 Javascript
canvas知识总结
Jan 25 Javascript
vue弹窗插件实战代码
Sep 08 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
Jul 20 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 函数中使用static的说明
2012/06/01 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
Python中的map、reduce和filter浅析
2014/04/26 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
行政主管岗位职责范本
2015/04/09 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
JavaScript中isPrototypeOf函数
2021/11/07 Javascript
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技