前段時間看了React Native,但是感覺在安卓反面的開發並不成熟.有較多功能有待完善,而且自己在實際運用的過程中在一些模塊上遇到了不曉得阻力,又苦於網上沒有找到那么多資源.於是打算先放一段時間,還是回過頭來看ReactJs吧.
React顛覆了html的傳統思維,代碼基本都寫在<script type="text/babel"></script>標簽里面.我開發的時候采用的是IDEA,當然也可以使用atom或者webstor.使用IDEA時,需要在settings里面的Language & Framework設置Javascript language version為JSX Harmony.否則,編輯器可能會對你的正確語法進行報錯.
<script src="../js/react.js"></script>
<script src="../js/react-dom.js"></script>
<script src="../js/browser.min.js"></script>
<script src="../js/jquery-1.7.2.min.js"></script>
html文件header標簽里面引用上面前三個文件,就可以進行react開發了,但是由於jquery的ajax請求比較方便,所以這里我引用了jquery,當然也可以自己封裝一個類似於ajax的方法,或者使用原生http請求與后台交互.
今天主要說說設置react樣式的問題:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>React Js</title>
<script src="../js/react.js"></script>
<script src="../js/react-dom.js"></script>
<script src="../js/browser.min.js"></script>
<script src="../js/jquery-1.7.2.min.js"></script>
<style rel="stylesheet">
.hello{
color: #ffffff;width: 200px;height: 30px;border: none;background-color: #00a0e9;line-height: 30px;text-align: center;font-size: 14px;
font-family: "Microsoft YaHei UI";cursor: pointer;
}
.redBack{
background-color: #f00;overflow: hidden;
}
</style>
</head>
<body>
<div id="msg"></div>
</body>
<script type="text/babel">
var colorStyle={
color: '#ffffff',
width: 200,height: 30,border: 'none',backgroundColor: '#00a0e9',textAlign: 'center',fontSize: 14,
fontFamily: "Microsoft YaHei UI",cursor: 'pointer',float:'left',lineHeight:'30px'
};
var Http=React.createClass({
getInitialState: function () {
return{
videoSrc:"../src/demo1.mp4"
}
},
handPost:function () {
// var HTTPrequest=new XMLHttpRequest();
// HTTPrequest.open("GET","/json/city");
// HTTPrequest.send();
// HTTPrequest.onreadystatechange =function () {
// if(HTTPrequest.readyState==4 && HTTPrequest.status==200){
// console.log(JSON.parse(HTTPrequest.responseText));
// }
// }
$.ajax({
type:'GET',
url:'/json/city',
dataType:'json',
success: function (data) {
console.log(data)
}
})
},
render:function () {
return(
<div className="redBack">
<video src={this.state.videoSrc} style={{float:'left',width:300,border:'5px solid #ffffff'}} controls="controls"></video>
<div onClick={this.handPost} style={colorStyle}>點擊請求城市資源</div>
</div>
)
}
});
ReactDOM.render(
<Http/>,document.getElementById('msg')
)
</script>
</html>
如上代碼所示,我覺得設置樣式有三種方法:
1.如藍色字體部分所示,直接寫行內樣式
2.在js代碼中定義一個變量,然后在元素標簽內部調用變量,如紅色字體所示.
3.設置標簽的className,如綠色字體部分
下面附上截圖: