您的位置:首页 > Web前端 > React

React学习笔记

2016-05-17 22:00 531 查看
去除所有的DOM操作;组件把状态和结果一一对应起来,从而直观理解,程序在不同状态时,产生什么输出;

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

组件协同:

组件的协同本质上是对组件的一种组织、管理方式。

目的:逻辑清晰、代码模块化、封装细节、代码可复用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: