React学习笔记

React特点

1.一套用于构建用户页面的js框架

2.基于组件开发

3.虚拟DOM   

这是React最重要的特性,放进内存,最小,差异部分更新 ,使得性能卓越,开销很小(频繁的DOM操作,会造成资源浪费)

diff算法: 一个比较计算层次结构区别的算法,用来计算DOM之间的差异

4.数据流(data  flow)     单向数据流

JSX语法

1. JSX是Javascript和XML联系在了一起,它不能直接运行,必须使用翻译器(bable)将它转换为JS才能运行。

2. React发明了JSX,利用HTML语法来创建虚拟DOM。当遇到 <,JSX就当HTML解析,遇到 就当JavaScript解析。

3.我们可以在 JSX 中使用 JavaScript 表达式。表达式写在花括号 {} 中。

 

4.在JSX中使用样式和真实的样式也很类似,通过style属性来定义,但和真实DOM不同的是,属性值不能是字符串而必须为对 
 

。要明确记住,{ }里面是JS代码,这里传进去的是标准的JS对象。在JSX中可以使用所有的的样式,基本上属性名的转换规范就是
 

将其写成驼峰写法,例如“background-color”变为“backgroundColor”, “font-size”变为“fontSize”,这和标准的
 

JavaScript操作DOM样式的API是一致的。

 

5. JSX扩展属性

使用ES6的语法

var props={ };

props.foo="1";

props.bar="1";

`

hello world

`

6。自定义属性

HTML5给出了方案,凡是以data-开头的自定义属性,可渲染到页面

7.显示HTML    显示一段HTML字符串,而不是HTML节点

借助一个属性  _html

`

{{_html:`

hello world

`}}
`

4)事件绑定   调用bind方法(设定作用域,要传递的参数)


ReactDOM.render是React的最基本的方法,用于将模板转换为html语言,并插入到DOM检点中。(什么东西渲染到哪里去)

组件及属性



事件的使用


 

状态及应用


状态组件应用


通过this.state改变视图

1. props属性:组件可以定义初始值,自己不可更改props属性值,只允许从父组件中传递过来:

2. state属性:组件用来改变自己状态的属性,通常使用setState({key:value})来改变属性值,不能使用this.state.xxx来直接改变,setState({key:value})方法会触发界面刷新。ReactJs内部会自动监听state属性的变化,一旦发生变化,就会主动触发组件的render方法来更新虚拟DOM结构。

3. 虚拟DOM:将真实的DOM结构映射成一个JSON数据结构

对于经常改变的数据且需要刷新界面显示,可以使用state。对于不需要改变的属性值可以使用props。React Native建议由顶层的父组件定义state值,并将state值作为子组件的props属性值传递给子组件,这样可以保持单一的数据传递。

var ShowEditor=React.createClass(
            {
                getInitialState:function(){
                  return {value:'你可以在这里输入文字'};
                },

                handleChange:function(){
                  this.setState({value:React.findDOMNode(this.refs.textarea).value});
                },

                render:function(){
                    return (
                            

输入