React笔记

React

目录结构 入口文件

React是 React 的核心库

ReactDom是提供与 DOM 相关的功能

RegisterServiceWorker加快react的运行速度的一个js文件

ReactDom.render() 渲染页面

React创建组件

  • render里边放的模板 是HTML和JavaScript的结合 jsx

创建子组件

  • App.js 根组件
  • 文件名首字母大写 类名首字母大写
  • 引入组件
    • import Home from ‘./components/Home’
  • render单个div可以不写();如果多个,需要用括号,并且需要一个大的div(根节点)包含起来
  • 构造函数 constructor
    • 需要写super();
      • super关键字,代表父类中的实例,即父类的this对象 是必须写的
      • 如果需要父子组件传值 需要写成super(props)

      子类需在constructor方法中调用super方法,否则新建实例时会报错,这是因为子类没有自己的this对象,而是继承父类的this对象

        constructor(props){super(props);}
      
    • 可以定义数据
         this.state = {name: 'zhangsan'}
      
  • 继承有两种写法
    • class Home extends Component{} 引入{ Component }
    • class Home extends React.Component{}

绑定数据 绑定对象 绑定属性 {this.state.name}

  • react绑定属性要注意
    • class要换成className
    • for要换成htmlFor
    • style style={{“color”:‘red’}}
    • 其他属性以前一样
  <div title={this.state.title}>绑定数据</div>   <div className='red'>绑定数据</div> <div style={{'color':'red'}}>绑定数据</div> <label htmlFor="name"></label>  <input id="name"/>

引入图片

  • 引入本地图片
    • 一种方法
          import logo from '../assets/img/image1';<img src={logo} ></img>
      
    • es5方法
         <img src={require('../assets/img/image1')}></img>
      
  • 远程图片方法
       <img src="https//www.baidu.com"></img>
    

循环数据 必须加key

  •   render() {var listResult = this.state.list.map(function(value,key){return <li key={key}>{value}</li>})return(<div> <ul>  {listResult}</ul><ul>{/*模板遍历*/}{this.state.list.map(function(value,key){return <li key={key}>{value}</li> })}</ul></div>)}
    

react事件方法

  •   construtor(){super();this.state={name:'world'}// 获取数据--第二种改变this指向的方法this.getMessage =  this.getMessage.bind(this)}// 获取数据--第三种改变this指向的方法getName=()=>{alert(this.state.name)}setData=()=>{// 改变state的值this.setState({name:'hello'})}setName=(str)=>{// 改变state的值this.setState({name:str})}<button onClick={this.run}>执行方法</button><button onClick={this.getData.bind(this)}>获取数据--第一种改变this指向的方法</button><button onClick={this.getMessage}>获取数据--第二种改变this指向的方法</button><button onClick={this.getName}>获取数据--第三种改变this指向的方法</button><button onClick={this.setData}>改变state里的值</button><button onClick={this.setName.bind(this,'hello')}>执行方法传值</button>
    

事件对象

  • 事件对象、键盘事件、表单事件、ref获取DOM节点、React实现类似Vue的双向数据绑定

事件对象:在触发DOM上的某个事件时,会产生一个事件对象event。这个对象包含着所有与事件有关的信息

  • 获取表单的值
    • 1.监听表单的改变事件; onChange
    • 2.在改变的事件里面获取表单输入的值; 事件对象
    • 3.把表单输入的值赋给state.username; this.setState({})
    • 4.点击按钮的时候获取state里的username this.state.username
       run=(event)=>{alert(event.target)  // 获取执行事件的DOM节点event.target.style.background="red"   // 改变button颜色// 获取DOM的属性alert(event.target.getAttribute('aid'))  // 123}inputChange=(e)=>{console.log(e.target.value)this.setState({username:e.target.value})}getInput=()=>{alert(this.state.username)}render(){return(<div>// 事件对象<button onClick={this.run} aid='123'>事件对象</button>// 表单事件// 获取表单的值  1.监听表单的改变事件;2.在改变的事件里面获取表单输入的值;// 3.把表单输入的值赋给state.username;4.点击按钮的时候获取state里的username<input onChange={this.inputChange}/> <button onClick={this.getInput} >获取input值</button></div>)}
    
  • ref获取DOM节点
    • 获取表单的值
      • 1.监听表单的改变事件; onChange
      • 2.在改变的事件里面获取表单输入的值; ref获取
      • 3.把表单输入的值赋给state.username; this.setState({})
      • 4.点击按钮的时候获取state里的username this.state.username
    • 获取DOM节点
      • 1.给元素定义ref属性
      • 2.通过this.refs.username 获取DOM节点
          inputChange=()=>{// 获取DOM节点// 1.给元素定义ref属性// 2.通过this.refs.username  获取DOM节点let val = this.refs.username.value;this.setState({username:val})}getInput=()=>{alert(this.state.username)}render(){return(<div>{/*表单事件*/}{/* 获取表单的值  1.监听表单的改变事件;2.在改变的事件里面获取表单输入的值;*/}{/* 3.把表单输入的值赋给state.username;4.点击按钮的时候获取state里的username*/}<input onChange={this.inputChange} ref="username"/> <button onClick={this.getInput} >获取input值</button></div>)}
    
  • 键盘事件
     inputKeyUp=(e)=>{if(e.keyCode==13){  // 说明按enteralert('123')}}render(){return(<div>{/*键盘事件*/}<input onKeyUp={this.inputKeyUp}/></div>)}
  • React实现类似Vue的双向数据绑定
    *
            inputChange=(e)=>{this.setState({username: e.target.value})}render(){return(<div>{/*双向数据绑定  model改变view view改变反过来影响view*/}<input value={this.state.username} onChange={this.inputChange}/></div>)}
  • react表单
    • 非约束性组件和约束性组件
      • 非约束性组件:, 这个defaultValue其实就是原生DOM中的value属性。这样写出来的组件,其value值就是用户输入的内容,React完全不管输入的过程。
      • 约束性组件: 。这里,value属性不再是一个写死的值,他是this.state.username是由this.handleChange负责管理的。这时候实际上input的value根本不是用户输入的内容,而是onChange事件触发之后,由于 this.setState导致了一次重新渲染。
      inputChange=(e)=>{this.setState({username: e.target.value})}render() {return(<div>{/* MVVM*/}<input value={this.state.username} onChange={this.inputChange}/><input /></div>)}

用到this 要注意this指向 function(){}.bind(this)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3DMM模型

目录 BFMBFM_200901_MorphableModel.matexp_pca.bintopology_info.npyexp_info.npy BFM BFM_2009 01_MorphableModel.mat from scipy.io import loadmat original_BFM loadmat("01_MorphableModel.mat") # dict_keys: [__header__, __version__, __globals__, # …

视频剪辑转码:mp4批量转成wmv视频,高效转换格式

在视频编辑和处理的领域&#xff0c;转换格式是一项常见的任务。在某些编辑和发布工作中&#xff0c;可能需要使用WMV格式。提前将素材转换为WMV可以节省在编辑过程中的时间和精力。从MP4到WMV的批量转换&#xff0c;不仅能使视频素材在不同的平台和设备上得到更好的兼容性&…

LoadBalancer将服务暴露到外部实现负载均衡Openelb-layer2模式配置介绍

目录 一.openelb简介 二.主要介绍layer2模式 1.简介 2.原理 3.部署 &#xff08;1&#xff09;先在集群master上开启kube-proxy的strictARP &#xff08;2&#xff09;应用下载openelb.yaml&#xff08;需要修改镜像地址&#xff09; &#xff08;3&#xff09;编写yam…

defer 用法

目录 1、资源释放 2、异常捕获 3、参数的预计算 4、defer 返回值的陷阱 1、资源释放 下面是一个简单的读取文件的程序&#xff0c;os.Open 打开文件资源描述符&#xff0c;在读取文件后&#xff0c;需要释放资源。但是在错误的时候&#xff0c;程序就直接返回那么&#xf…

密集书库是什么意思?图书馆密集书库的书可以借出吗

密集书库是一种用于存储大量书籍和资料的高密度储存设施。它通常包括一系列钢制书架和可移动的储存架&#xff0c;使得书籍可以被紧密地排列和存储&#xff0c;以最大程度地利用存储空间。同时&#xff0c;密集书库还有各种自动化系统&#xff0c;如自动化取书系统、气候控制系…

安卓apk抓包(apk抓不到包怎么办)

起因 手机&#xff08;模拟器&#xff09;有时候抓不到apk的包&#xff0c;需要借助Postern设置一个代理&#xff0c;把模拟器的流量代理到物理机的burp上。 解决方案 使用Postern代理&#xff0c;把apk的流量代理到burp。 Postern是一个用于代理和网络流量路由的工具&#xf…

Linux coredump异常处理

什么是coredump异常调试 Linux coredump功能是当Linux下应用程序异常时,Linux内核默认的一种异常信号处理机制,内核会把异常信息与进程内存转储成coredump文件,程序员通过gdb工具可以离线分析应用程序异常时的情况。 1)配置 core 文件生成的目录,其中 %e 表示程序文件名,…

Linux Namespace技术

对应到容器技术&#xff0c;为了隔离不同类型的资源&#xff0c;Linux 内核里面实现了以下几种不同类型的 namespace。 UTS&#xff0c;对应的宏为 CLONE_NEWUTS&#xff0c;表示不同的 namespace 可以配置不同的 hostname。User&#xff0c;对应的宏为 CLONE_NEWUSER&#xf…

骨传导耳机会影响听力么?盘点骨传导耳机的好处与坏处都有哪些?

先说结论&#xff0c;使用骨传导耳机是不会影响听力的&#xff01;并且由于骨传导耳机的特殊传声原理&#xff0c;相比于传统的入耳式耳机&#xff0c;骨传导耳机拥有更多的优点&#xff0c;下面带大家了解一下骨传导耳机的优点和缺点都有哪些。 一、骨传导耳机的优点是什么&a…

kubectl获取ConfigMap导出YAML时如何忽略某些字段

前言&#xff1a; 当我们在使用Kubernetes时&#xff0c;常常需要通过kubectl命令行工具来管理资源。有时我们也想将某个资源的配置导出为YAML文件&#xff0c;这样做有助于版本控制和资源的迁移。然而&#xff0c;默认情况下&#xff0c;使用kubectl get命令导出资源配置会包…

PTA 7-224 sdut-C语言实验-排序问题

输入10个整数&#xff0c;将它们从小到大排序后输出&#xff0c;并给出现在每个元素在原来序列中的位置。 输入格式: 输入数据有一行&#xff0c;包含10个整数&#xff0c;用空格分开。 输出格式: 输出数据有两行&#xff0c;第一行为排序后的序列&#xff0c;第二行为排序…

JVM:双亲委派(未完结)

类加载 定义 一个java文件从编写代码到最终运行&#xff0c;必须要经历编译和类加载的过程&#xff0c;如下图&#xff08;图源自b站视频up主“跟着Mic学架构”&#xff09;。 编译就是把.java文件变成.class文件。类加载就是把.class文件加载到JVM内存中&#xff0c;得到一…

电子取证--windows下的volatility分析与讲解

1.volatility的安装 提示&#xff1a;我用的是2.6版本&#xff08;windows&#xff09;&#xff0c;如果直接下载的出现问题&#xff0c;用迅雷就可以解决 下载地址&#xff1a;Volatility 2.volatility的使用 1.进入终端&#xff0c;查看镜像的系统信息&#xff1a; volati…

2312skia,10构建

介绍 Skia图形库可来绘画文本,几何图形和图像: 带透视的3x3矩阵*抗锯齿,透明度,滤镜*着色器,传输模式,掩码过滤,路径特效,子像素文本 Skia的设备后端目前包括: 光栅*OpenGL*PDF*XPS*SVG*及(用来录制,然后回放到另一个Canvas中的)图片 构建 确保已先按说明下载Skia Skia用GN…

Huawei FusionSphere FusionCompte FusionManager

什么是FusionSphere FusionSphere 解决方案不独立发布软件&#xff0c;由各配套部件发布&#xff0c;请参 《FusionSphere_V100R005C10U1_版本配套表_01》。 目前我们主要讨论FusionManager和FusionCompute两个组件。 什么是FusionCompte FusionCompute是华为提供的虚拟化软…

初识动态规划算法(题目加解析)

文章目录 什么是动态规划正文力扣题第 N 个泰波那契数三步问题使用最小花费爬楼梯 总结 什么是动态规划 线性动态规划&#xff1a;是可以用一个dp表来存储内容&#xff0c;并且找到规律存储,按照规律存储。让第i个位置的值等于题目要求的答案 >dp表&#xff1a;dp表就是用一…

SpringBoot——嵌入式 Servlet容器

一、如何定制和修改Servlet容器的相关配置 前言&#xff1a; SpringBoot在Web环境下&#xff0c;默认使用的是Tomact作为嵌入式的Servlet容器&#xff1b; 【1】修改和server相关的配置&#xff08;ServerProperties实现了EmbeddedServletContainerCustomizer&#xff09;例如…

Python 中 ConnectionRefusedError: [Errno 111] Connection Refused 错误

此错误表明客户端无法连接到服务器脚本系统上的端口。 既然能ping通服务器&#xff0c;应该不会吧。 这可能是由多种原因引起的&#xff0c;例如到目的地的路由不正确。 第二种可能性是您的客户端和服务器之间有防火墙&#xff0c;它可能在服务器上&#xff0c;也可能在客户端…

欢迎回到 C++ - 现代 C++(心得-壹)

原文链接欢迎回到 C - 现代 C | Microsoft Learn 这里先是讲了现代c的优势&#xff0c;其相对于其他编程语言有快速、高效。 相对于其他语言&#xff0c;该语言更加灵活&#xff0c;跨平台&#xff08;硬件平台&#xff09;性也很强&#xff0c;可以直接访问硬件&#xff0c;虽…

第三方UI组件库的样式修改

一、场景&#xff1a; 一般来说&#xff0c;我们在使用第三方UI组件库&#xff08;如&#xff1a;vant&#xff0c;element-plus等&#xff09;时&#xff0c;UI组件库自带的样式不能满足用户的个性化需求时&#xff0c;就需要我们开发人员自己动手对组件库的局部样式进行修改。…