今天整理一下自己关于react的学习笔记。

什么是React?

学习某一个框架首先得知道这个框架是干什么的,它的特点是什么,有哪些优点和缺点。

  • React有4个特点

    • 组件化
    • 虚拟DOM
    • 单项数据流
    • jsx

与Angular的不同点

  • Angular借鉴了MVC的思想,达到减少DOM操作的目的
  • React并非MVC框架,只能算是MVC中的V,引入了组件化开发的思想

React的实现原理

  1. React内部有一个虚拟的DOM树,先在内部修改虚拟DOM,再判断虚拟DOM与实际DOM的区别,然后进行替换。
  2. 把整个页面划分成一个一个组件,小组件组成大组件。做成组件之后,优点是组件的重用度很高。
  3. 用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初步的更多相关文章

  1. React初步学习-利用React构建个人博客

    React初步学习-利用React构建个人博客 用React和Webpack写了一个很简单的个人博客,主要是想要熟悉一下react中各种基本基本属性及方法的使用.在构建过程中碰到不少问题,通过阅读官方 ...

  2. React Native 初步

    [React Native 初步] 1.Create React Native App is the easiest way to start building a new React Native ...

  3. ReactJS入门(一)—— 初步认识React

    React刚开始红的时候,由于对其不甚了解,觉得JSX的写法略非主流,故一直没打算将其应用在项目上,随着身边大神们的科普,才后知后觉是个好东西. 好在哪里呢?个人拙见,有俩点: 1. 虚拟DOM —— ...

  4. React Native基础&入门教程:初步使用Flexbox布局

    在上篇中,笔者分享了部分安装并调试React Native应用过程里的一点经验,如果还没有看过的同学请点击<React Native基础&入门教程:调试React Native应用的一小 ...

  5. 浅谈react的初步试用

    现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Face ...

  6. 前端新手如何安装webstorm ,初步搭建react项目

    下载安装webstorm:配置成功: 配置成功后就可以开启webstorm项目了.(存微信收藏..) 1:在webstorm下配置node环境: 2:完成之后: React官方脚手架地址: https ...

  7. React 的 server render 初步学习

    所谓server render 即服务端渲染,这是为了解决现代前端框架下的单页应用在SEO方面不友好的问题. react 的SSR主要思路就是 1.将应用的根组件导出 如 <App /> ...

  8. 初步学习React Router 4.0

      React Router 4.0 是react官方推荐的路由库.4是已经正式发布的最新版本. 初始化项目启动之后: npm run eject 弹出配置文件.自定义配置webpack 查看下pac ...

  9. 初步理解React

    1.组件化 在 MV* 架构出现之前,组件主要分为两种: 狭义上的组件,又称为 UI 组件,比如 Tabs 组件.Dropdown 组件.组件主要围绕在交互 动作上的抽象,针对这些交互动作,利用 Ja ...

随机推荐

  1. django: db howto - 2

    继 django: db howto - 1 : 一 操作数据库的三种方式: [root@bogon csvt03]# python2.7 manage.py shell Python 2.7.5 ( ...

  2. html拼接数据的时候一定要注意null值的问题

    后台会返回null文本  如果直接拼接 不仅仅格式问题 前台会显示null   如果是图片  用fiddle抓取 还会发现你请求了一个带域名/null的接口     所以要把null格式化为空文本

  3. SQL从入门到基础–08 Union、Union all及案例

    一.联合结果集 1. 简单的结果集联合: Select FNumber,FName,FAge from T_Employee union select FidCardNumber,FName,FAge ...

  4. 报错: App Transport Security has blocked a cleartext HTTP (http://) resource load since it is ins

    环境:Xcode7.1.1 + iOS9.1 详细错误: App Transport Security has blocked a cleartext HTTP (http://) resource ...

  5. js函数知识点

    1.即使写成functon a()也是可以调用外面定义的变量的,写(a,b),我估计是为了降低耦合性 2.即使写成function a()也是可以用arguments[a]来默认写了(a,b) 3.在 ...

  6. Sed命令学习

    1.Sed简介     流数据编辑器 Stream editer(sed),它是一种行编辑器(对应于全屏编辑器),一次处理一行的内容.默认不编辑原文件内容(-i会直接修改原文件).处理时,它先将当前符 ...

  7. 抽奖转盘(jqueryrotate.js)

    jqueryrotate.js抽奖转盘,使用方便,兼容各浏览器,效果如下图 <!DOCTYPE> <head> <meta http-equiv="Conten ...

  8. 自律训练法 John Sehorz

    自律训练法,系1932年由德国精神医学医师John Sehorz所创立.他研究人们在催眠催眠状态下,所呈现的生理状态,如:沉重与温暖感.. ,因而,John Sehorz改以「逆向操作」之方式,由自我 ...

  9. 子类重载父类的方法“parent:方法名”

    在PHP中不能定义重名的函数,也包括不能再同一个类中定义重名的方法,所以也就没有方法重载.单在子类中可以定义和父类重名的方法,因为父类的方法已经在子类中存在,这样在子类中就可以把从父类中继承过来的方法 ...

  10. iOS开发之多媒体API(1)

    iOS开发之多媒体API(1)       播放视频 视频文件介绍 视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类.尽管后者在播放的稳定性和播放画面质量上可能没 ...