以最簡單的例子來說
class HelloMessage extends React.Component {
render() {
return (
<div>
Hello {this.props.name}
</div>
);
}
}
ReactDOM.render(
<HelloMessage name="Taylor" />,
document.getElementById('hello-example')
);
如果不是用JSX來寫的話,正規的JS要這樣來寫,才能像上面一樣
class HelloMessage extends React.Component {
render() {
return React.createElement(
"div",
null,
"Hello ",
this.props.name
);
}
}
ReactDOM.render(React.createElement(HelloMessage, { name: "Taylor" }), document.getElementById('hello-example'));
在上面的JSX裡面,render裡面這也是JSX特有的寫法,這邊也可以帶入變數,不過React不是雙向綁定,想在畫面上即時更新必須先學state,這邊就沒VUE來的方便。
另外JSX的寫法return 裡面不能有2個父級標籤,不然會報錯,也就是說如果你這樣寫是不可以的
class HelloMessage extends React.Component {
render() {
return (
<div>
Hello {this.props.name}
</div>
<div>
Hello 2
</div>
);
}
}
只能夠
class HelloMessage extends React.Component {
render() {
return (
<div>
Hello {this.props.name}
<div>
Hello 2
</div>
</div>
);
}
}
1.使用者定義的 Component 必須由大寫字母開頭
//這樣寫是錯誤的
class helloMessage extends React.Component {
render() {
return (
<div>
Hello {this.props.name}
</div>
);
}
}
ReactDOM.render(
<helloMessage name="Taylor" />,
document.getElementById('hello-example')
);
解決這個問題
class HelloMessage extends React.Component {
render() {
return (
<div>
Hello {this.props.name}
</div>
);
}
}
ReactDOM.render(
<HelloMessage name="Taylor" />,
document.getElementById('hello-example')
);
2.註解
// 單行註解
/*
多行註解
*/
class HelloMessage extends React.Component {
render() {
return (
{/* 若是在子元件註解要加大括號{} */}
<div>
Hello {this.props.name}
</div>
);
}
}
ReactDOM.render(
<HelloMessage name="Taylor" />,
document.getElementById('hello-example')
);
3.樣式使用
class HelloMessage extends React.Component {
render() {
return (
{/* 寫style的話必須用{{ }}這樣來寫 */}
<div style={{ color: '#FFFFFF', fontSize: '30px'}}>
Hello {this.props.name}
</div>
);
}
}
ReactDOM.render(
<HelloMessage name="Taylor" />,
document.getElementById('hello-example')
);
參考:https://zh-hant.reactjs.org/docs/jsx-in-depth.html
今天有點趕,本來想寫更完整的,下班完立刻補今天的鐵人,