const name = 'Josh Perez';
const element = (
<h1 className="greeting">
Hello, Henry
</h1>
);
ReactDOM.render(
element,
document.getElementById('root')
);const name = 'Josh Perez';
const element = React.createElement(
'h1',
{className: 'greeting'},
'Hello, world!'
);
ReactDOM.render(
element,
document.getElementById('root')
);function LoginButton(props) {
return <button>Login</button>;
}
function LogoutButton(props) {
return <button>Logout</button>;
}
function LoginStatusPanel(props) {
if (props.isLoggedIn) {
return <LogoutButton/>;
}
return <LoginButton/>;
}function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}class Welcome extends React.Component {
// componentDidMount() {}
// componentWillUnmount () {}
// state
render() {
return <h1>Hello, {this.props.name);
}
}為上層 Component 傳入,且不可修改的參數
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
function App() {
return (
<div>
<Welcome name="Henry" />
<Welcome name="Cahal" />
<Welcome name="Edite" />
</div>
);
}
ReactDOM.render(
<App />,
document.getElementById('root')
);class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
componentDidMount() {
this.timerID = setInterval(
() => this.tick(),
1000
);
}
componentWillUnmount() {
clearInterval(this.timerID);
}
tick() {
this.setState({
date: new Date()
});
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);為上層 Component 傳入,且不可修改的參數
// JSX
const element = (
<a onClick={activateLasers}>
Activate Lasers
</a>
);
function activateLasers() {
console.log('laser activated');
}// JSX
const element = (
<FriendList onItemClicked={openAvatar}>
Activate Lasers
</FriendList>
);
function openAvatar(id) {
console.log(`avatar ${id} opened`);
}