首页 > 代码库 > react
react
一、ReactDom.render()方法是react的最基本的方法,用于将模板转为HTML语言,并插入到指定的DOM节点里。
ReactDom.render( <h1>Hello,world!</h1>, document.getElementById(‘example‘) )
二、JSX语法
上一节代码中,html标签直接写在javascript语言中,不加任何引号,这就是JSX语法,他允许HTML和javascript的混写
var names = [‘Alice‘, ‘Emily‘, ‘Kate‘]; ReactDOM.render( <div> { names.map(function(name){ return <div>{name}</div> }) } </div>, document.getElementById("example") )
上面的代码体现了JSX的基本语法规则:遇到HTML标签(以<开头),就用HTML规则解析,遇到代码块(以{开头),就用javascript语法解析
JSX允许直接在模板中插入javascript变量,如果这个变量是一个数组,则会展开这个数组的所有成员
var arr = [ <h1>Hello world!</h1>, <h2>React is awesome</h2>, ]; ReactDOM.render( <div>{arr}</div>, document.getElementById("example") )
上面代码的arr变量是一个数组,结果JSX把它的所有成员添加到模板,运行结果如下:
三、组件
React将代码封装成组件(Component),然后像插入普通html标签一样,在网页中插入这个组件,React.createClass方法就用于生成一个组件类
var HelloMessage = React.createClass({ render: function(){ return <h1>Hello,{this.props.name}</h1> } }) ReactDOM.render( <HelloMessage name="孙俪"/>, document.getElementById("example") )
上面代码,HelloMessage就是一个组件类,模板插入<HelloMessage />时,会自动生成一个HelloMessage的一个实例,所有组件类都必须有自己的render方法,用于输出组件
注意:组件类的第一个字母必须大写,否则会报错,比如:HelloMessage不能写成helloMessage。另外,组件类只能包含一个顶层标签,否则也会报错
var HelloMessage = React.createClass({ render: function(){ return <h1>Hello,{this.props.name}</h1> <p>哈哈</p> } }) ReactDOM.render( <HelloMessage name="孙俪"/>, document.getElementById("example") )
上面的代码会报错,因为组件类里面包含了两个顶层标签,h1 和 p。
组件的用法和原生的html标签完全一致,可以任意加入属性,比如,<HelloMessage name="Jone">组件加入了一个name属性,值为Jone,组件的属性可以在组件类的this.props对象上获取,比如,name属性就可以通过this.props.name读取。
在给组件类里的元素添加属性的时候,class属性需要写成className,for属性需要写成htmlFor,这是因为class和for都是javascript的保留字
react