React初步
今天整理一下自己关于react的学习笔记。
什么是React?
学习某一个框架首先得知道这个框架是干什么的,它的特点是什么,有哪些优点和缺点。
- React有4个特点
- 组件化
- 虚拟DOM
- 单项数据流
- jsx
与Angular的不同点
- Angular借鉴了MVC的思想,达到减少DOM操作的目的
- React并非MVC框架,只能算是MVC中的V,引入了组件化开发的思想
React的实现原理
- React内部有一个虚拟的DOM树,先在内部修改虚拟DOM,再判断虚拟DOM与实际DOM的区别,然后进行替换。
- 把整个页面划分成一个一个组件,小组件组成大组件。做成组件之后,优点是组件的重用度很高。
- 用React写的网页速度快的原因是由于使用了虚拟DOM,虽然可以操作真是DOM,但是不要这样做,不然就失去了虚拟DOM的特性。
基础代码
ReactDOM.render(); //渲染
var helloElement = React.createElement("h1",null,"Hello,React!!!); //里边的null是用来添加CSS属性的
var pElement = React.createEleement("p",null,"这是正文内容");
var divElement = React.createElement("div",{style:{color:"red"}},[helloElement,pElement]);
ReactDOM.render(divElement,document.getElementById("content");
以上是实现React的最基本的语法,把helloElement和pElement的放入到divElement的组件中,然后把divElement的组件插入到页面中的div中。
JSX语法,类似html,但和html不同
语法要求比较严格,需要正确的结束符,创建模块组件,变量名需要首字母大写(大驼峰)。
<script type="text/babel"></script>
JSX语法需要通过转换成js代码才能够执行,转换分为两种方式, 分别是在线转,引入browser.min.js文件(开发阶段); 转换以后再执行(上线阶段)
<script type="text/babel">
ReactDOM.render(<h1>Hello</h1>,document.getElementById("content"); var element = (<div><h1>hello</h1><p>正文内容</p></div>);
ReactDOM.render(element,document.getElementById("content")); //用class的时候要用className;
//style={{fontSize:"30px"}};
</script> <script type="text/babel">
var DivElement = React.creatClass({
render:function(){
return <div><h1>hello</h1><p>正文</p></div>;
}
});
ReactDom.render(<DivElement />,document.getElementById("content");
</script>
循环数组
<script type="text/babel">
var ary = ["a","b","c","d","e"];
var ListElement = React.createClass({
render:function(){
var lis = [];
for(var i=0;i<ary.length;i++){
lis.push(<li>{ary[i]}</li>);
}
return <ul>{lis}</ul>
}
});
</script>
this.props 组件之间的数据传递
this.props.属性名 用来获取传给他的属性。
this.props.children 用来获取标签中的文本内容。
如何划分组件
划分组件的原则是,不能让每个组件的功能变多,也不能让组件的功能过于单一。
React 模块化开发
下载三个插件
- npm install babel-preset-react
- npm install react
- npm install react-dom
一个组件写成一个文件。
React 要实现交互功能,需要state(状态)
Reactjs component 中 prop 和 state 的区别
props和state都是用于描述component状态的,并且这个状态应该是与显示相关的。
State
如果component的某些状态需要被改变,并且会影响到component的render,那么这些状态就应该用state表示。 例如:一个购物车的component,会根据用户在购物车中添加的产品和产品数量,显示不同的价格,那么“总价”这个状态,就应该用state表示。
Props
如果component的某些状态由外部所决定,并且会影响到component的render,那么这些状态就应该用props表示。 例如:一个下拉菜单的component,有哪些菜单项,是由这个component的使用者和使用场景决定的,那么“菜单项”这个状态,就应该用props表示,并且由外部传入。
React初步的更多相关文章
- React初步学习-利用React构建个人博客
React初步学习-利用React构建个人博客 用React和Webpack写了一个很简单的个人博客,主要是想要熟悉一下react中各种基本基本属性及方法的使用.在构建过程中碰到不少问题,通过阅读官方 ...
- React Native 初步
[React Native 初步] 1.Create React Native App is the easiest way to start building a new React Native ...
- ReactJS入门(一)—— 初步认识React
React刚开始红的时候,由于对其不甚了解,觉得JSX的写法略非主流,故一直没打算将其应用在项目上,随着身边大神们的科普,才后知后觉是个好东西. 好在哪里呢?个人拙见,有俩点: 1. 虚拟DOM —— ...
- React Native基础&入门教程:初步使用Flexbox布局
在上篇中,笔者分享了部分安装并调试React Native应用过程里的一点经验,如果还没有看过的同学请点击<React Native基础&入门教程:调试React Native应用的一小 ...
- 浅谈react的初步试用
现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Face ...
- 前端新手如何安装webstorm ,初步搭建react项目
下载安装webstorm:配置成功: 配置成功后就可以开启webstorm项目了.(存微信收藏..) 1:在webstorm下配置node环境: 2:完成之后: React官方脚手架地址: https ...
- React 的 server render 初步学习
所谓server render 即服务端渲染,这是为了解决现代前端框架下的单页应用在SEO方面不友好的问题. react 的SSR主要思路就是 1.将应用的根组件导出 如 <App /> ...
- 初步学习React Router 4.0
React Router 4.0 是react官方推荐的路由库.4是已经正式发布的最新版本. 初始化项目启动之后: npm run eject 弹出配置文件.自定义配置webpack 查看下pac ...
- 初步理解React
1.组件化 在 MV* 架构出现之前,组件主要分为两种: 狭义上的组件,又称为 UI 组件,比如 Tabs 组件.Dropdown 组件.组件主要围绕在交互 动作上的抽象,针对这些交互动作,利用 Ja ...
随机推荐
- C# \\u8888类型的unicode转换为字符串方法
1.双斜杠\\ 处理: 2.将编码分组,将编码转换为int,再转换为char. string sss = "\\u6c88\\u9633"; '; string[] arr = a ...
- jdbc 获取connection 对象的三种方式
获取数据库连接方法一:驱动实现类 //创建mysql的Driver对象 Driver driver=new com.mysql.jdbc.Driver(); //jdbc url 定位一个数据库: S ...
- ICP编程软件配置(烧写KEIL编译后的bin文件)
1. 安装NuMicro_ICP_Programming_Tool_1.29.6425软件 2. 打开软件后选择目标芯片后点击“连接”按钮 3. 添加程序 4. 点击设定按钮进行设定 5. 点击开始 ...
- copy-on-write(写时拷贝技术)
今天看<Unix环境高级编程>的fork函数与vfork函数时,看见一个copy-on-write的名词,貌似以前也经常听见别人说过这个,但也一直不明白这究竟是什么东西.所以就好好在网上了 ...
- tomcat启动报错总结
错误一 webapps\ROOT does not exist or is not a readable directory 错误原因:在tomcat的server.xml的context中配置了不存 ...
- oracle数据库使用plsql(64位)时出现的问题
64位win7上装PL/SQL,经常会遇见“Could not load "……\bin\oci.dll"”这个错误,我查了一下资料,原因是PL/SQL只对32位OS进行支持,解决 ...
- bug经验
1.异常信息丢失导致定位问题困难. 2.findbugs工具 3.在某些if语句判断中return,可能会导致文件句柄无法关闭. 4.lastmodified()在win下和linux下的处理是不同的 ...
- activiti 5.17 流程图中文乱码问题
1. 流程图中任务中的中文乱码显示问题. 解决方法:设置processEngineConfiguration中的两个字体属性,例如: <bean id="processEngine ...
- windows下重命名一个带有前缀"."dot字符的名字的错误问题
如果用正常的右键重命名那么肯定会报错的,比如: 有一个名为project的文件,我想把它命名为.project,加了个前缀dot.然后window就报错了,弹出个对话框让“你必须输入一个文件名”.它可 ...
- UNIX网络编程--IPV4 IPV6 ICMPV4 ICMPV6
一.IPV4首部 IP层提东无连接不可靠的数据报递送服务.它会尽力把IP数据报递送到指定的目的地,然而并不保证他们一定到达,也不保证他们的到达顺序与发送顺序一致,还不保证每个IP数据报只到达一次.任何 ...