REACT prestudy
21476 ワード
WHAT IS REACT?
React is a JavaScript library, is used for building UIs and front-end applications.
Often called a framework.
宣言性VSプログラム性
WHY USE IT?
REACT STATE
CREATE-REACT-APP
Anatomy of a component
-
React 01. JSX (Syntax Extension for JacaScript)
const hi = <p>Hi</p>;
JSX Element
ex)
const hi = <p>Hi</p>;
const myFavorite = {
food: <li>샐러드</li>,
animal: <li>dog></li>,
hobby: <li>programming</li>
};
JSX attribute
<div />
<div></div> 는 동일
const hi = <input readOnly={true} />;
const myFavorite = {
food: <li>샐러드</li>,
animal: <li>dog</li>,
hobby: <li className="list-item">programming</li>
};
Nested JSX
Rendering
図は
reactDOM.render{
<h1>Hello, World!</hi>
document.getelementById('root')
};
React 02. Components & Props
Component
function Welcome() {
return <h1>Hello </h1>;
}
ReactDOM.render(
<Welcome />,
document.getElementById('root')
);
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
コンポーネントの操作
より小さなコンポーネントに分離
function Comment(props) {
return (
<div className="comment">
<div className="user-info">
<img className="avatar"
src={props.author.avatarUrl}
alt={props.author.name}
/>
<div className="user-info-name">
{props.author.name}
</div>
</div>
<div className="comment-text">
{props.text}
</div>
<div className="comment-date">
{formatDate(props.date)}
</div>
</div>
);
}
function Avatar(props) {
return (
<img className="avatar"
src={props.user.avatarUrl}
alt={props.user.name}
/>
);
}
AvatarコンポーネントにはユーザのAvatarUrlとnameが必要なのでCommentコンポーネントにはpropsが必要です.author情報はuserというプロパティに渡されました.props.authorのavatarUrlとnameの値はuserを介して渡されました.
.user-info部分をcomponentに分割します.
function UserInfo(props) {
return (
<div className="user-info">
<Avatar user={props.user} />
<div className="user-info-name">
{props.user.name}
</div>
</div>
);
}
function Comment(props) {
return (
<div className="comment">
<UserInfo user={props.author} />
<div className="comment-text">
{props.text}
</div>
<div className="comment-date">
{formatDate(props.date)}
</div>
</div>
);
}
React 03. State of Component
State
stateはコンポーネント内で定義して使用する必要があります.
class Button extends React.Component {
constructor() {
super();
this.state = {
clicked: false
}
}
render() {
return (
<div
className="btn"
onClick={()=>{this.setState({ clicked: !this.state.clicked })}}
>
{this.state.clicked ? '좋아요' : '싫어요'}
</div>
);
}
}
ReactDOM.render(
<Button />,
document.getElementById('root')
);
上のコードはボタンをクリックするたびにstateを変更し、画面に表示されるテキスト「はい」「いいえ」をクリックするたびに変更します.
stateは複数追加でき、名前は任意に命名できます.
clickイベントが発生すると、clickedの状態が変更されます.
コンストラクション関数()は、クラスインスタンスを作成するときに常に呼び出される関数ジェネレータです.
constructor() {
super();
this.state = {
clicked: false
}
}
buttonコンポーネントを描画するには、次の手順に従います.state.clicked値が必要ですが、初期値は存在しません.したがって、コンストラクション関数はfalse値を指定します.
super()キーワードはreactです.Componentクラスのメソッド(ex.render)を使用する必要があります.
propsコード
class Button extends React.Component {
constructor() {
super();
this.state = {
clicked: false
}
}
render() {
return (
<div
className={`btn ${this.props.type === 'like' ? 'like-btn' : ''}`}
onClick={()=>{this.setState({ clicked: !this.state.clicked })}}
>
{this.state.clicked ? '좋아요' : '싫어요'}
</div>
);
}
}
ReactDOM.render(
<Button type="like" />,
document.getElementById('root')
);
React 04. Lifecycle of React component
上記のクラスでコンポーネントを作成する場合はreactが望ましい.Componentクラスが提供するレンダリング、ComponentDidMount、ComponentDidUpdateなどの方法が使用できるからです.componentのライフサイクルに基づいてそれぞれのメソッドを呼び出します.
function tick() {
const element = (
<div>
<h1>Hello, world!</h1>
<h2>It is {new Date().toLocaleTimeString()}.</h2>
</div>
);
ReactDOM.render(
element,
document.getElementById('root')
);
}
setInterval(tick, 1000);
----------後で整理して・・・困難後
React 05. Event handling
onClick={()=>{this.setState({ clicked: !this.state.clicked })}}
これにより,イベント処理が行われることが分かる.class Button extends React.Component {
constructor() {
super();
this.state = {
clicked: false
}
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState({
clicked: !this.state.clicked
});
}
render() {
return (
<div
className={`btn ${this.props.type === 'like' ? 'like-btn' : ''}`}
onClick={this.handleClick}
>
{this.state.clicked ? '좋아요' : '싫어요'}
</div>
);
}
}
ReactDOM.render(
<Button type="like" />,
document.getElementById('root')
);
イベントハンドラ関数をthis.handleClick = this.handleClick.bind(this);
Reference
この問題について(REACT prestudy), 我々は、より多くの情報をここで見つけました https://velog.io/@sangyouh/REACT-prestudyテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol