中文官網html
英文官網前端
下載引入相關js文件vue
js/react.development.js
js/react-dom.development.js
js/babel.min.js
經過React實現前端效果react
<script type="text/babel">
<!--代碼以下-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="root"></div>
<script src="js/react.development.js"></script>
<script src="js/react-dom.development.js"></script>
<script src="js/babel.min.js"></script>
<script type="text/babel">
ReactDOM.render(<h1>hello world</h1>,document.getElementById('root'))
</script>
</body>
</html>
複製代碼
<script type="text/babel">
// let element = <div>Hello world!!!</div>
let element = ( // ---> 這裏的()是可選的
<div>
<div>Hello</div>
<div>world</div>
</div>
)
ReactDOM.render(element,document.getElementById('root'))
</script>
複製代碼
vue是雙花括號
)<script type="text/babel">
// let element = <div>text</div>
let info = {
name: 'zs',
age: 18
}
let element = (
<div>
<div>{info.name}</div>
<div>{info.age}</div>
</div>
)
ReactDOM.render(element,document.getElementById('root'))
</script>
複製代碼
<div>{ 6 + 1 }</div>
複製代碼
<script type="text/babel">
let foo = function () {
return 'hello world!'
}
let element = (
<div>
<div>{ foo() }</div>
</div>
)
ReactDOM.render(element,document.getElementById('root'))
</script>
複製代碼
// JSX中樣式類必須使用className屬性,不可使用class屬性
<script type="text/babel">
let cn = 'active';
let element = (
<div>
<div className={ cn }>測試屬性</div>
</div>
)
ReactDOM.render(element,document.getElementById('root'))
</script>
複製代碼
JSX自己也是一個表達式編程
let element = <div>JSX表達式</div>
複製代碼
let foo = function () {
return <div>hello world!</div>
}
複製代碼
let foo = function (param) {
return <div>{param}</div>
}
let element = (
<div>
<div>{ foo(<div>參數</div>) }</div>
</div>
)
ReactDOM.render(element,document.getElementById('root'))
複製代碼
<script type="text/babel">
function showInfo(flag) {
if (flag) {
return <div>hello</div>
} else {
return <div>world</div>
}
}
let element = <div>showInfo(false)</div>
ReactDOM.render(element,document.getElementById('root'))
</script>
複製代碼
let data = <div>hello</div>
if (true) {
data = <div>world</div>
}
複製代碼
// &&前面的條件成立,就顯示後面的內容,不然不顯示
let flag = true;
let addData = <div>{flag && <div>hello</div>}</div>
複製代碼
let flag = false;
let msg = <div>{ flag ? <div>hello</div> : <div>world</div>}</div>
複製代碼
function foo(flag) {
if(flag) {
//若是這裏執行,那麼久終止後續代碼的執行,最終不會進行渲染
return null;
}
return <div>阻止渲染</div>;
}
複製代碼
let data = ['公孫離','橘右京','孫尚香','娜可露露'];
let nz = data.map((item,i) => {
return <div key={i}><span>{item}</span></div>
});
let element = (
<div>{nz}</div>
);
ReactDOM.render(element,document.getElementById('root'));
複製代碼
key的做用:數組
React.createElement(element, [props], [...children])
let element = (
<h2 className = "active">
Hello world!
</h2>
);
// 上面的代碼能夠用如下形式表示:
let element = React.createElement(
'h2',
{className: 'active'},
'Hello world'
);
複製代碼
let element = <div className='active'>Hello</div>
複製代碼
let style = {
color: 'pink',
backgroundColor: '#ccc'
}
let element = <div style = {style}>Hello</div>
複製代碼
使用函數建立組件瀏覽器
function Welcome() {
return <div>Hello world</div>
}
複製代碼
函數父組件向子組件傳值bash
// 父組件內容
let m = 10;
<Child num = {n} uname='jack'/>
// 子組件
function Child(props) {
return <div>Hello {props.uname}</div>
}
複製代碼
類的繼承babel
class Student extends Person {}
複製代碼
// 默認構造函數
constructor (...props) {
super (...props);
}
複製代碼
使用類建立組件框架
class Welcome extends React.Component {
render() {
return (
<div><h1>類組件</h1></div>
)
}
}
複製代碼
父組件向子類組件傳值
組件的內部狀態state