React学习笔记1
标签:
前端学习笔记
今天开始学习react.js特开这一篇随笔作为react的学习笔记,主要记录看到的重点内容和自己的心得感想:
一. 基本组件和方法
1.reactjs引入了一个虚dom的概念,对于每一个dom点都会存在一个状态,如果这个dom上的属性发生了改变,在react中如果发生了变化:首先会调用“diff”方法,去识别这一改变。之后会reconciliation,更新diff之后的结果。因为reactjs使用的是faek dom所以改变的只是需要改变的一部分,其余部分是不会发生改变,
2.在react中每个compont链接到每个element,以mount-point作为一个parents容器
3.JSX:可以将HTML-ish嵌入到JavaScript中
4.Component:当我们使用reactDom中的render方法的时候会有两个参数存在第一个是需要redner的Component,第二个是需要加入的dom的目标节点。
5.createClass可以创建一个或者多个自定义Component。
6. text/jsx与text/babel的区别:如果要想运行jsx语法必须要加入JSXTransformer.js这个头文件,不然无法解析jsx语法。
7. 记得语法正确啊!!!!少一个逗号都要检查半天!!!
8.props:当我们定义Component时,想要加入属性时可以使用props,this.props可以在render方法中render动态数据
二. spec,lifecycle, state:
生命周期方法:
componentWillMount:在服务器端和客户端render之前调用一次
componentDidMount:仅仅在客户端render之后
shouldComponentUpdate:判定Component是否需要被更新
componentWillUnmount:在Component被挂载之前调用
状态:
每个Component都有state对象和props对象,对状态进行改变使用的方法是setState会触发UI的更新,并且和react进行交互。可以利用getInitialState方法来设置Component的初始状态
三. Event:
react同时建立了一个事件通过浏览器的事件系统:
(一定要注意方法的大小写,这个一定不能错,要不就更加像新手了)
react中的事件可以通过setState将react的逻辑和UI中的界面进行联系。
四.unidirectional data flow
不定向数据流:在react中,是通过props和states来对应用数据进行不定向传输的,这意味着父类的Component管理状态,并且通过props来向下传输。state将通过setState进行更新,并且刷新UI,其结果并且会向下传给子模块,通过this.props
这段Component代码分为三个部分:
第一个部分是filterList的方法,更新搜索结果并且通过setState对result进行更新。
第二部分是getInitialState和ComponentWillmount,对Component之中的内容进行初始化
第三部分是list子组件,用来显示搜索后的结果。
var FilteredList = React.createClass({ filterList: function(event){ var updatedList = this.state.initialItems; updatedList = updatedList.filter(function(item){ return item.toLowerCase().search( event.target.value.toLowerCase()) !== -1; }); this.setState({items: updatedList}); }, getInitialState: function(){ return { initialItems: [ "Apples", "Broccoli", "Chicken", "Duck", "Eggs", "Fish", "Granola", "Hash Browns" ], items: [] } }, componentWillMount: function(){ this.setState({items: this.state.initialItems}) }, render: function(){ return ( <div className="filter-list"> <input type="text" placeholder="Search" onChange={this.filterList}/> <List items={this.state.items}/> </div> ); } }); var List = React.createClass({ render: function(){ return ( <ul> { this.props.items.map(function(item) { return <li key={item}>{item}</li> }) } </ul> ) } });