今天整理一下自己关于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. C# \\u8888类型的unicode转换为字符串方法

    1.双斜杠\\ 处理: 2.将编码分组,将编码转换为int,再转换为char. string sss = "\\u6c88\\u9633"; '; string[] arr = a ...

  2. jdbc 获取connection 对象的三种方式

    获取数据库连接方法一:驱动实现类 //创建mysql的Driver对象 Driver driver=new com.mysql.jdbc.Driver(); //jdbc url 定位一个数据库: S ...

  3. ICP编程软件配置(烧写KEIL编译后的bin文件)

    1. 安装NuMicro_ICP_Programming_Tool_1.29.6425软件 2. 打开软件后选择目标芯片后点击“连接”按钮 3. 添加程序 4. 点击设定按钮进行设定 5. 点击开始 ...

  4. copy-on-write(写时拷贝技术)

    今天看<Unix环境高级编程>的fork函数与vfork函数时,看见一个copy-on-write的名词,貌似以前也经常听见别人说过这个,但也一直不明白这究竟是什么东西.所以就好好在网上了 ...

  5. tomcat启动报错总结

    错误一 webapps\ROOT does not exist or is not a readable directory 错误原因:在tomcat的server.xml的context中配置了不存 ...

  6. oracle数据库使用plsql(64位)时出现的问题

    64位win7上装PL/SQL,经常会遇见“Could not load "……\bin\oci.dll"”这个错误,我查了一下资料,原因是PL/SQL只对32位OS进行支持,解决 ...

  7. bug经验

    1.异常信息丢失导致定位问题困难. 2.findbugs工具 3.在某些if语句判断中return,可能会导致文件句柄无法关闭. 4.lastmodified()在win下和linux下的处理是不同的 ...

  8. activiti 5.17 流程图中文乱码问题

    1. 流程图中任务中的中文乱码显示问题.   解决方法:设置processEngineConfiguration中的两个字体属性,例如: <bean id="processEngine ...

  9. windows下重命名一个带有前缀"."dot字符的名字的错误问题

    如果用正常的右键重命名那么肯定会报错的,比如: 有一个名为project的文件,我想把它命名为.project,加了个前缀dot.然后window就报错了,弹出个对话框让“你必须输入一个文件名”.它可 ...

  10. UNIX网络编程--IPV4 IPV6 ICMPV4 ICMPV6

    一.IPV4首部 IP层提东无连接不可靠的数据报递送服务.它会尽力把IP数据报递送到指定的目的地,然而并不保证他们一定到达,也不保证他们的到达顺序与发送顺序一致,还不保证每个IP数据报只到达一次.任何 ...