今天整理一下自己关于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. 导入表数据 txt

    导入表数据 txt mysql> load data infile "D:/import.txt" into table shop;输出: Query OK, rows af ...

  2. mysql 主从搭建

    主要搭建步骤如下: 1.打开binlog,设置server_id     打开主库的--log-bin,并设置server_id 2.主库授权                --最好也在从库对主库授权 ...

  3. HTML5画布(图像)

    案例1: <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8& ...

  4. dedecms 织梦ping服务插件 最新破解可用版

    dedecms 织梦ping服务插件 最新破解可用版  ping_gbk.xml <module> <baseinfo> name=ping服务 team=井哥 time=20 ...

  5. HTML&CSS基础学习笔记1.9-添加图片

    <img>标签是用来添加图片的~ <img>标签的使用方法:<img src="图片的地址"> 先来看段实例代码: <!DOCTYPE h ...

  6. Scala学习笔记--特质trait

    http://outofmemory.cn/scala/scala-trait-introduce-and-example 与Java相似之处 Scala类型系统的基础部分是与Java非常相像的.Sc ...

  7. bash模式和模式匹配

    bash模式和模式匹配 ${variable#pattern} 如果模式匹配变量取值的开头,删除最短匹配部分,返回其余部分 ${variable##pattern} 如果模式匹配变量取值的开头,删除最 ...

  8. 解决ScrollView 与ListView共存显示不完全的问题

    ScrollView与ListView共存会存在滚动的问题,并且ListView只显示一个半Item. 当ListView的高度设定一定的值时,ListView同样地会显示对应的高度的Item. 因此 ...

  9. Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析

    来自http://blog.csdn.net/luoshengyang/article/details/8479101 在Android系统中,Activity窗口的大小是由WindowManager ...

  10. 【转】彻底解决INSTALL_FAILED_UPDATE_INCOMPATIBLE的安装错误

    原文网址:http://bbs.9ria.com/thread-245162-1-1.html 利用adb shell进入系统,进入/data/app或者/data/data,删除跟你安装的apk同样 ...