React学习笔记
2016-05-17 22:00
531 查看
去除所有的DOM操作;组件把状态和结果一一对应起来,从而直观理解,程序在不同状态时,产生什么输出;
jsx的特点
类XML语法容易接受
增加JS语义
结构清晰
抽象程度高:屏蔽掉手动DOM操作;跨平台(react native)
代码模块化
元素名HelloMessage ,子节点{this.props.name},节点属性:name="John"
JSX语法:
首字母大小写敏感:
大写:自定义的组件HelloMessage
小写:DOM中的组件div
嵌套
求值表达式(可以进行运算)
驼峰命名
html=>htmlFor,class=>className
条件判断
三元表达式
变量
直接调用函数
||运算符
非DOM属性
dangerouslySetInnerHtml、ref、key
dangerouslySetInnerHtml:在JSX中直接插入HTML代码
ref:父组件引用子组件===》this.refs.childp(虚拟的DOM节点)
key:提供渲染性能===>组件内部,key不可以相同
JSX解析器
入口函数---》载入其他模块==>解析JSX==>执行JS
组件的生命周期:
初始化:getDefaultProps、getInitialState、componentWillMount、render、componentDidMount
运行中:componentWillReceiveProps、shouldComponUpdate、componentWillUpdate、render、componentDidUpdate
销毁:componentWillUnmount
在删除组件之前进行清理操作,比如计时器和事件监听器
状态只和组件自己相关,由自己维护;组件不能修改属性;
组件在运行时需要修改的数据就是状态。
绑定事件处理函数:
触摸类事件:
onTouchCancel、onTouchEnd、onTouchMove、onTouchStart
键盘类事件:
onKeyDown、onKeyPress、onKeyUp
剪切类事件
onCopy、onCut、onPaste
表单
onChange、onInput、onSubmit
焦点:
onFocus、onBlur
UI元素
onScroll
滚动
onWheel
鼠标
onClik、onContextMenu、onDoubleClick、onMouseDown按下、onMouseEnter进入、onMouseLeave离开、onMouseMove移动、
onMouseOut、onMouseOver、onMouseUp
鼠标拖拽
onDrop、onDrag、onDragEnd、onDragEnter、onDragExit、onDragLeave、onDragOver、onDragStart
组件协同:
组件的协同本质上是对组件的一种组织、管理方式。
目的:逻辑清晰、代码模块化、封装细节、代码可复用
jsx的特点
类XML语法容易接受
增加JS语义
结构清晰
抽象程度高:屏蔽掉手动DOM操作;跨平台(react native)
代码模块化
var HelloMessage = React.createClass({ render:function(){ return <div className="test">Hello {this.props.name}</div> } }); React.render(<HelloMessage name="John" />,mountNode);
元素名HelloMessage ,子节点{this.props.name},节点属性:name="John"
JSX语法:
首字母大小写敏感:
大写:自定义的组件HelloMessage
小写:DOM中的组件div
嵌套
求值表达式(可以进行运算)
驼峰命名
html=>htmlFor,class=>className
条件判断
三元表达式
{this.props.name?this.props.name:'world'}
变量
var HelloWorld = React.createClass({ getName:function(){ if( this.props.name) return this.props.name else return 'world' }, render : funcfion(){ var name=this.getName(); return <p>Hello ,{name}</p> } )}; React.render(<div><HelloWorld name="Li"></HelloWorld></div>,document.body)
直接调用函数
return <p>Hello,{this.getName()}</p>
||运算符
{this.props.name || "world"}
非DOM属性
dangerouslySetInnerHtml、ref、key
dangerouslySetInnerHtml:在JSX中直接插入HTML代码
ref:父组件引用子组件===》this.refs.childp(虚拟的DOM节点)
key:提供渲染性能===>组件内部,key不可以相同
JSX解析器
入口函数---》载入其他模块==>解析JSX==>执行JS
组件的生命周期:
初始化:getDefaultProps、getInitialState、componentWillMount、render、componentDidMount
运行中:componentWillReceiveProps、shouldComponUpdate、componentWillUpdate、render、componentDidUpdate
销毁:componentWillUnmount
在删除组件之前进行清理操作,比如计时器和事件监听器
状态只和组件自己相关,由自己维护;组件不能修改属性;
组件在运行时需要修改的数据就是状态。
绑定事件处理函数:
触摸类事件:
onTouchCancel、onTouchEnd、onTouchMove、onTouchStart
键盘类事件:
onKeyDown、onKeyPress、onKeyUp
剪切类事件
onCopy、onCut、onPaste
表单
onChange、onInput、onSubmit
焦点:
onFocus、onBlur
UI元素
onScroll
滚动
onWheel
鼠标
onClik、onContextMenu、onDoubleClick、onMouseDown按下、onMouseEnter进入、onMouseLeave离开、onMouseMove移动、
onMouseOut、onMouseOver、onMouseUp
鼠标拖拽
onDrop、onDrag、onDragEnd、onDragEnter、onDragExit、onDragLeave、onDragOver、onDragStart
组件协同:
组件的协同本质上是对组件的一种组织、管理方式。
目的:逻辑清晰、代码模块化、封装细节、代码可复用
相关文章推荐
- 初识React,Virutal DOM, State以及生命周期
- ReactiveCocoa核心方法bind(绑定)
- ReactNative 使用微软的CodePush进行热更新,继续填坑
- ReactNative浅谈
- React-native windows下android开发入门
- ReactNative 当前url和cookies的获取
- ReactNative 适合初学的第一个教程demo,找租房
- ReactJS读书笔记:DOM操作
- ReactJS学习笔记:感想 - 为什么说Virtual DOM 是React的精髓所在
- ReactJS学习笔记:表单
- ReactJS学习笔记:动画
- ReactNative 从环境和第一个demo说起,填坑教程
- React Native 代码片段
- React Native-目前最火的前端技术?
- react.js 之 批量添加与删除功能
- 如何创建第一个React Native android应用
- React Native 实例 - BBC新闻客户端
- ReactiveCocoa基础和一些常见类介绍
- 配置redux react 以及webpack
- 在Windows下搭建React Native Android开发环境