react基本语法及组件
一、react简介
1、起源:React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。
2、特点:
1.声明式设计 −React采用声明式,可以轻松描述应用。 2.高效 −React通过对DOM的模拟(虚拟DOM),最大限度地减少与DOM的交互。 3.灵活 −React可以与已知的库或框架很好地配合。 4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。 5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。 6.单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
解释
a.声明式设计 和 命名式设计
1、声明式:你要做什么事情 直接告诉机器 让机器自己想办法去做 你只需要得到结果 如数组中的map遍历
var arr = [1,2,3,4,5];
arr = arr.map((item)=>{
return item+=2
})
console.log(arr) 2、命令式:你要做什么事情 按照流程书写告诉机器 让机器去实现 如使用for循环
var arr = [1,2,3,4,5];
for(var i=0;i<arr.length;i++){
arr[i]+=2;
} console.log(arr)
b.虚拟DOM ()
真实的js对象 虚拟DOM与数据相结合生成最终的DOM结构(真实)
如
createElement("
<div>ffff</div>
<p>222</p>
<p>333</p>
<p>444</p>
")
中间的标签均为虚拟DOM
二、基本语法
1、对比vue中的基本指令学习react的基本语法,
vue中包含 v-text v-html v-v-bind v-if和v-show v-for v-on v-model
import React from 'react';
import ReactDom from 'react-dom';
import App from './App'; // jsx 语法
// let Dom = <h2>这是h2标签包裹的内容,是jsx语法</h2>; // let message = 'wppp';
// v-text
// let Dom = <h3>{message} v-text</h3> // v-html
// let message = <h2>wpppp v-html</h2>
// let Dom = <div>{message}</div> // v-bind
// let message = 'wpppp v-bind';
// let Dom = <h3 title={message}>{message}</h3> // v-if v-show
// let message = 'wppp v-if v-show'
// let Dom = true?<h3 title={message} style={{display:true?'block':'none'}}>{message}</h3>:'false' // v-for
// 不加key 会报警告:Warning: Each child in an array or iterator should have a unique "key" prop. // let arr = ['www','ppp','666']
// let Dom = <ul>
// {
// arr.map((item,index)=>{
// return <li key={index}>{item}</li>
// })
// }
// </ul> // v-on
//语法与原生事件用法相同
// v-model ReactDom.render(
//
Dom,
// 调用外部引入的模块,不可直接用App 而应该用<App/>
// <App/>,
document.querySelector('#root'),
()=>{
console.log('这是第三个参数,是回调函数')
}
)
// render
// 参数1:需要渲染的组件或虚拟dom
// 参数2:将渲染好的组件放到哪个标签上面
// 参数3:回调函数
2、组件的使用
如:上述引入的App,(src 下的 index.js)
import React from 'react';
import ReactDom from 'react-dom';
import App from './App'; ReactDom.render(
<App/>,
document.querySelector('#root'),
()=>{
console.log('这是第三个参数,是回调函数')
}
)
// render
// 参数1:需要渲染的组件或虚拟dom
// 参数2:将渲染好的组件放到哪个标签上面
// 参数3:回调函数
引入的App , (src 下的 App.js),案例如下
import React,{Component,Fragment} from 'react'
import ReactDom from 'react-dom'
class App extends Component{
constructor(){
super();
this.state={
firstname:'www',
lastname:'ppp'
}
}
render(){
let {firstname,lastname} = this.state;
return(
<Fragment>
<div onClick={this.handleClick1.bind(this)}>
<p>{firstname}</p>
<p>{lastname}</p>
</div>
</Fragment>
)
}
handleClick1(){
//
this.setState({
firstname:'eee',
lastname:'ddd'
})
}
}
export default App;
需注意的是:
1、React.Component 所有组建的父类
直接在引用中引用,
import React ,{Component,Fragment} from "react"; 2、在react当中所有的组件创建的时候必须首字母大写, 为了区分Element元素和组件的区别 如 App 3、render
类型:生命周期函数
作用:渲染虚拟DOM
特点:当render渲染虚拟Dom的时候会将数据和虚拟Dom结合形成真正的Dom结构,会将当前的虚拟Dom在缓存中保存一份,
当数据发生变化时会将缓存中的虚拟DOm和第二次改变的Dom进行对比。修改要改变的节点,而不是改变所有的虚拟Dom。 4、Fragment 作用当做节点标签使用 但是不会被渲染成标签 5、constructor 初始化函数 可以用来存放当前组件所需要的一些状态,为必写项!!!
且super() 为必须要写的!!!
6、react中的函数不用加() 如 <div onClick={this.handleClick1.bind(this)}>
7、react中如果需要改变this.state里面的数据 需要用this.setState方法
码字略累。。。且睡且长寿。。。。
react基本语法及组件的更多相关文章
- 我们一起来详细的了解react的语法以及组件的使用方法
jsx的介绍 React 使用 JSX 来替代常规的 JavaScript. JSX 是一个看起来很像 XML 的 JavaScript 语法扩展. jsx的优点 JSX 执行更快,因为它在编译为 J ...
- 【每天半小时学框架】——React.js的模板语法与组件概念
[重点提前说:组件化与虚拟DOM是React.js的核心理念!] 先抛出一个论题:在React.js中,JSX语法提倡将 HTML 和 CSS 全都写入到JavaScrip ...
- react系列(一)JSX语法、组件概念、生命周期介绍
JSX React中,推出了一种新的语法取名为JSX,它给了JS中写HTML标签的能力,不需要加引号.JSX的语法看起来是一种模板,然而它在编译以后,会转成JS语法,只是书写过程中的语法糖. JSX的 ...
- 【React 6/100】 React原理 | setState | JSX语法转换 | 组件更新机制
****关键字 | setState | JSX语法转换 | 组件更新机制 组件更新机制 setState() 的两个作用 修改state 更新组件 过程:父组件重新渲染时,也会重新渲染子组件,但只会 ...
- 初学React:定义一个组件
接着聊React,今天说说如何创建一个组件类. <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 前端笔记之React(二)组件内部State&React实战&表单元素的受控
一.组件内部的State 1.1 state state叫状态,是每一个类式组件都有的属性,但函数式组件,没有state. state是一个对象,什么值都可以定义. 在任何类式组件的构造函数中,可以用 ...
- react基础语法(五) state和props区别和使用
props的验证: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- 从 Vue 的视角学 React(四)—— 组件传参
组件化开发的时候,参数传递是非常关键的环节 哪些参数放在组件内部管理,哪些参数由父组件传入,哪些状态需要反馈给父组件,都需要在设计组件的时候想清楚 但实现这些交互的基础,是明白组件之间参数传递的方式, ...
- react实战系列 —— react 的第一个组件
react 的第一个组件 写了 react 有一个半月,现在又有半个月没写了,感觉对其仍旧比较陌生. 本文分两部分,首先聊一下 react 的相关概念,然后不使用任何语法糖(包括 jsx)或可能隐藏底 ...
随机推荐
- AVR单片机教程——数码管
先解答之前一个思考题:如果不把引脚配置为输出而写高电平,连接LED会怎样? 实验结果是,LED会亮,但相比于输出高电平的情况,亮度很低.这是为什么呢? 通过上一篇教程我们知道,引脚输入输出模式是由寄存 ...
- maven系列:archetype项目模板_create-from-project
主要介绍create-from-project插件在命令行下的使用. [第一步:生成模板项目] 新建一个maven项目,比如叫 :groupId=com.abc.demo,artifactId=com ...
- 【题解】Luogu P5288 [HNOI2019]多边形
原题传送门 HN的题目就是毒瘤 我们有以下猜想: 1.最后所有的线都连到了n号点上 2.最小步数应该为n-3-已经连到n号点的线段数量 本来有些边\((a_i,n)\)会将整个图分割成很多个区间.对于 ...
- JDK8源码解析 --- Long 类型
最近都在看JDK8的源码,想把记录下来与大家一起共享,每天 积累一点,每天成长一点.看了装箱Long类型,有好多以前没有注意到或者不知道的内容,慢慢懂得.废话不多说,直接上代码讲解... 1.缓存区L ...
- sqoop从mysql导数据到hive报错:Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
背景 使用sqoop从mysql导数据到hive,从本地服务器是可以访问mysql的(本地服务器是hadoop集群的一个datanode),但是sqoop导数据的时候依然连接不上mysql 报错如下: ...
- python 2.django的镜像安装与第一次项目创建-运行以及app创建
django的设计模式 Django是一个遵循MVC设计模式的框架,MVC是Model.View.Controller的三个单词的简写.分别代表模型.视图.控制器. 而Django也是是一个MTV的设 ...
- Linux:检查当前运行级别的五种方法
运行级就是Linux操作系统当前正在运行的功能级别.存在七个运行级别,编号从0到6.系统可以引导到任何给定的运行级别.运行级别由数字标识. 每个运行级别指定不同的系统配置,并允许访问不同的进程组合.默 ...
- MPSoc之Hello World学习笔记
XILINX 新一代 SOC,Zynq UltraScale+ MPSOC 系列性能强悍无比,号称相比ZYNQ 7000系列每瓦性能提升5倍,一直想体验.近期因项目需要,入手了一套米尔的MPSoc开发 ...
- Web网站实现facebook登录
一.登录facebook开发者中心:https://developers.facebook.com 二.创建应用编号,如下图: 三.添加产品选择Facebook登录,如下图: 四.facebbok登录 ...
- CSS-宽度自适应和浏览器兼容笔记
自适应 宽度自适应:网页元素根据窗口或子元素自动调整宽度 适用百分比进行设置,例如:100% 铺满:50% 占据一般宽度 块元素如果不设置宽度,默认为100% 自适应中可以设置最大或者最小宽度和高度 ...