react里面有幾個需要區別開的函數
React.createClass 、React.createElement、Component
首選看一下在瀏覽器的下面寫法:
<div id="app">
</div>
<script src="../js/react.js"></script>
<script src="../js/react-dom.js"></script>
<script src="../js/browser.min.js"></script>
<script type="text/babel">
var Info = React.createClass({ //創建一個react模板
render:function(){
return <p>createClass----{this.props.you}</p>
}
});
var eleC = React.createClass({ //創建一個react模板
render:function(){
return <div>createElement---{this.props.name}</div>
}
});
var eleProps = {name:"eleC"};
var ele = React.createElement(eleC,eleProps); //創建一個react元素;第一個參數為模板,第二個參數為模板的props
//ReactDOM.render是React的最基本方法用於將模板轉為HTML語言,並插入指定的DOM節點。ReactDOM.render(template,targetDOM),該方法接收兩個參數:第一個是創建的模板,多個dom元素外層需使用一個標簽進行包裹
ReactDOM.render(
<div>
<Info you="createClass" />
{ele}
</div>,
document.getElementById('app')
);
</script>
React.createClass 是創建了一個react模板,使用的時候,像html標簽一樣,比如上面的info
React.createElement 是創建了一個react元素,相當於把模板具體化,使用的時候,是當做js變量,直接寫入,比如上面的 {ele}
以上是在瀏覽器引入的寫法,下面看看,用npm構建的寫法
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
class App extends Component {
render() {
return (
<div className="App">
這里是app
</div>
);
}
}
class Info extends Comment{
render(){
return (
<div>
info
</div>
)
}
}
class Ele extends Comment{
render(){
return (
<div>
ele
</div>
)
}
}
var myProps ={
};
var ele = React.createElement(Ele,myProps);
ReactDOM.render(<App>
<Info></Info>
{ele}
</App>,document.getElementById('root'));
區別在於,使用服務啟動,不再需要用 React.createClass 來創建模塊,直接使用類,來繼承 Component 類即可完成模板創建。。后面使用的方式基本一致。要注意的是內部 初始化 state和props等有區別
