á áááºáááºá á¬ážáá²á·áá°áá»á¬ážáá±ááá¯á· áá±á·áá¬ááŒáá·áºáá±ááá·áº "React á áááºááá¯ááºáá¬" ááá¯á·áá»á¬ážááœá±ážáá±ááá¬áž? áá áºáááºáá±á¬á· React á ááááºáá«áá°ážá áá±ážáááºáž ááœá±ážáááºážááœá±á áá°áááá¯ážááá¯áž áá±ážáááºážááœá±ážáááºáž á áá áºááœá±ááá± áá¯á¶ážáááŒá±á¬ááºážááœá¬ážááá¯á· "ááŒá±á¬ááºážááááºáá±áá¬" áá«á Official Documentation áá²á· á¡ááºáá¬áááºá Tutorial ááœá±áá±á·áá¬ááŒáá·áºááá¯ááºáááºáááºáž -- ES6 ááœá±á Arrow Function ááœá±á Class ááœá±á JSX ááœá±áá²á· ááá¯ááá±áá®áá±á¬ááºá ááá¯ááá±áá®áá±á¬áẠááŒá áºáá±ááŒá®áž -- áá°ááá¯á·ááŸááºážááŒá០ááá¯ááŸá¯ááºááœá¬ážááẠááá¯áááᯠááŒá áºáá±áá¬ááᯠááœá±á·ááá«áááºá
áá®ááá¯á·á áºááŸá¬ React ááᯠáá»ááºážáááºáá¯á¶áá áºáá»áá¯ážáá²á· ááŒá±á¬ááºážáá²áá±á¬áºáºááŒáá±ážááœá¬ážááŸá¬áá«á áá»áœááºáá±á¬áºááá¯á·áá»áá±áá²á· Rockstar Developer Course á áááºáááºážáá° áááºáááºážáá¬ážááœá±ááᯠáá®áááºážáá²á· áááºáááºááá¯á· áááºááœááºáá¬ážáá±ááá·áº áááºáááºáž áá»áááºááŒáá·áºáá²á·á¡áá« ááááºá¡áááºáááŒá±ááá¯á· á¡áá¯ááá¯á á¬á¡ááŒá Ạáá±ážáá¬ážááá¯ááºáá¬áá«á JavaScript á¡ááŒá±áá¶ááŸááá° áááºáá°áááᯠáá¬ážáááºááŒá®áž á áááºáááºá á¬ážááááºá·áááºááá¯á· áááºáá«áááºá
áᬠLibrary, áᬠFramework á០ááá«áá²á· ááá¯ážááá¯áž JavaScript áá²á· HTML Element áá áºáá¯áááºáá±á¬ááºáááºááá¯ááẠá¡áá¯ááᯠáááºáá±á¬ááºááá¯ááºáá«áááºá
<div id="app"></div>
<script>
var element = "<p title='Some Title'>Hello in JavaScript</p>";
document.getElementById("app").innerHTML = element;
</script>
ááá¯ážááá¯áž String áá
áºáá¯á¡áá±áá²á·áá² <p>
Element áá
áºáá¯ááᯠáááºáá±á¬ááºááŒá®áž #app
áá²ááŸá¬ ááá·áºááœááºážáá±á¬áºááŒá
á±ááá¯ááºáá¬áá«á ááá¹áááŸáááẠáá®á¡ááá¯ááºáž áá°ážá
ááºážááŒáá·áºááá¯á·ááá«áááºá ááá¯áá»ááºáá²á· ááááºááᯠááá¬áá«áá²á áá®áááºážááŸá¬ ááŸááá±áá²á· á¡á¬ážáááºážáá»áẠááŒá¿áá¬ááœá±ááᯠá¡áá±ážá
ááẠááá·áºáááŸááºážááŒááá¯ááºáá«áá°ážá á¡áá¬ážáá°ááááºáááá¯á· jQuery ááŸá¬ áááºááá¯áá¯ááºááá² áááºáá±á¬áºááŒáá»ááºáá«áááºá
<div id="app"></div>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
var element = $("<p>")
.html("Hello in jQuery")
.attr("title", "Some Title");
$("#app").append(element);
</script>
áá«ááá±á¬á· <p>
Element áá
áºáá¯ááᯠjQuery áá²á·áááºáá±á¬ááºááá¯ááºááŒááºáž ááŒá
áºáá«áááºá title
Attribute áá²á· Hello in jQuery
ááá¯áá²á· Content ááá¯á·áá«áááºáá«áááºá á
á¬áááºáá°áᬠáá®á¡ááá·áºáá áá°áááááºážá ááááŸáááŒá®ážááŒá
áºáááºááá¯á· áá°ááá«áááºá áááºáááºááŒá®áž á¡áá¬ážáá°ááááºáááŸáááá¯á· React ááᯠá¡áá¯á¶ážááŒá¯ áááºáá±á¬ááºáááºááá¯ááẠá¡áá¯ááᯠáááºáá±á¬ááºááá¯ááºáá«áááºá
<div id="app"></div>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script>
const element = React.createElement(
"p",
{title: "Some Title"},
"Hello from React"
);
ReactDOM.render(element, document.getElementById("app"));
</script>
ááá¯ááºááááŸáááŒá®ážááŒá
áºáá²á· jQuery áá¯ááºáá²á· ááŸáá¯ááºážááŸááºáá±á·áá¬ááŒáá·áºáá«á ááá±á¬ááá¬á ááááºáááœá¬áá¬ááᯠááœá±á·áááá¯ááºáá«áááºá React.createElement()
ááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž <p>
Element áá
áºáᯠáááºáá±á¬ááºááŒááºáž ááŒá
áºáá«áááºá ááá Argument á áááºáá±á¬ááºááá¯áá²á· Element ááŒá
áºááŒá®áž áá¯ááá Argument á Attribute á
á¬áááºáž ááŒá
áºáá«áááºá React ááŸá¬áá±á¬á· Property (props) ááá¯á· áá±á«áºáá«áááºá áááá Argument ááá±á¬á· áááºáá±á¬ááºááá·áº Element áá²á· Content ááŒá
áºáá«áááºá
ááá¯áá»ááºáá²á· Element ááᯠ#app
áá²ááŸá¬ áá±á¬áºááŒááá¯á·á¡ááœáẠReactDOM.render()
ááᯠáá¯á¶ážáá¬ážáá«áááºá áá®á¡ááá¯ááºáž áá°ážáá°á
ááºážáááºááŒáá·áºááá¯á· ááá«áááºá áᬠSetup á០áááá¯áá«áá°ážá NPM áááºážáááá¯áá°ážá Yarn áááºážáááá¯áá°ážá Babel ááá¯á· Webpack ááá¯á·áááºáž áááá¯áá°ážá ááá¯ážááá¯áž HTML Document áá
áºáá¯áá²ááŸá¬ áá®á¡ááá¯ááºážáá² ááá¯ááºááá¯áẠáá±ážáá¬áž á¡áá¯á¶ážááŒá¯ááá¯ááºááŒááºáž ááŒá
áºáá«áááºá áá°á jQuery ááá¯á· áá¬ááá¯á·áá²á· áá±ážáááºážáááœá¬ááá¯á· áá®á¡ááá·áºáá áá¬ážáááºááááºá
áᬠáááŸááá°ážááá¯á· áááºáá«áááºá
áá«áá±ááá·áº React.createElement()
ááá¯áá¯á¶ážááŒá®áž áááºáá®ážáá¬ážáá²á· Element áᬠáááºááááºáá«áááºá áááºááááºáá±á¬á· ááŒááºááááºáá«áááºá áá«ááᯠááœááºá¡á±á¬ááºááá¯ááŒá®áž JSX ááá¯áá²á· áááºážááá¬ááᯠáááºááœááºá¡áá¯á¶ážááŒá¯ááŒáá«áááºá JSX ááá¯áᬠá¡áááºážááŒá®ážáá±á¬á· ááá¯ááºáá«áá°ážá JavaScript Code áá²ááŸá¬ HTML Element ááœá±ááᯠááá¯ááºááá¯áẠááá·áºááœááºáž áá±ážáá¬ážááŒááºážáá² ááŒá
áºáá«áááºá
ááá¯ážááá¯áž JavaScript ááá±á¬á· áá®ááᯠHTML ááœá±ááᯠJavaScript áá¯ááºáá² áá±á¬áá±ážáá¬ááᯠáááºáá¬ážáááºááá²á áá«ááŒá±á¬áá·áº Babel ááᯠáá¬ážáááºá¡á±á¬ááºáá¯ááºáá±ážáá²á· áááºážááá¬áá áºáá¯ááᯠááŒá¬ážáá¶áá¯á¶ážááá«áááºá ááá°áá¬áá±á¬áºááŒáá±ážáá«áááºá
<div id="app"></div>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script type="text/babel">
var element = <p title="Some Title">Hello from React/JSX</p>
ReactDOM.render(element, document.getElementById("app"))
</script>
áá¯ááºááá±á¬á· á
á±á¬á
á±á¬ááá¯ááºáá«áá²á ááœá¬ááœá¬ážáá¬á React.createElement()
ááá¯ááá¯á¶ážáá±á¬á·áá² ááá¯áá»ááºáá²á· <p>
Element ááᯠJavaScript áá¯ááºáá² ááá¯ááºááá¯ááºááá·áºáá±ážááá¯ááºáá¬áá«á áá®ááá¯áá±ážáá¬ážááá¯ááºááá¯á· Babel ááᯠ<script src>
áá²á· áá»áááºáá±ážáá¬ážáááᯠáá¯ááºáá±ážááá·áº <script>
Element ááŸá¬áááºáž type="text/babel"
ááá¯á· áááºááŸááºáá±ážáá¬ážáá«áááºá áá®áá¯ááºááá¯áááºáž ááá¯ááºááá¯ááºáá°ážáá° á
ááºážáááºááŒáá·áºááá¯á· ááá«áááºá áá®á¡áááºá·ááŸá¬áááºáž áᬠSetup ááŸá¬ áá¯ááºá
áᬠáááá¯áá«áá°ážá á
ááºážááŒáá·áºááŒá
áºá
á±áá»ááºááá¯á· ááááºáááá¯á¡á±á¬áẠááá°áá¬áá±ážáá¬ážáá¬áá«á á
ááºážááŒáá·áºááá¯ááºáá«á
áá®áá¯ááºááá¯áá² áá±ážáááºáž áá²áá²áááºááŒááºááŒáá·áºáá«á¥á®ážáááºá
<div id="app"></div>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script type="text/babel">
function Element(props) {
return (
<p title={props.title}>
Hello from React Function Component
</p>
)
}
ReactDOM.render(
<Element title="Prop Title" />,
document.getElementById("app")
);
</script>
áá®áá
áºáá«áá±á¬á· Element
ááá¯áá²á· Function áá
áºáá¯ááŒá±ááŒá¬ááŒá®áž ááá¯áá»ááºáá²á· Element ááᯠReturn ááŒááºáá±ážáá¬ážáá¬áá«á á¡áá¯ááᯠElement áá
áºáá¯ááŒááºáá±ážáá²á· Function áᬠReact Element ááŒá
áºááœá¬ážáá«áááºá á¡áá±á«áºá¡áá±á«áºá¡ááŸááºááá±á¬á· React Component ááá¯á· áá±á«áºáááŸá¬áá«á áá°ážááŒá¬ážáá»ááºá¡áá±áá²á· props
ááᯠParameter á¡ááŒá
Ạáááºáá¶áá¬ážáá¬ááᯠááœá±á·áááŸá¬ ááŒá
áºáá«áááºá áá® Element ááᯠReactDOM.render()
ááŸá¬ ááŒááºáá±á«áºáá¯á¶ážáá¯á¶ááᯠáááááŒá¯ááŒáá·áºáá«á áá
áºááŒá¬áž Function ááœá±ááᯠááá¯ááºáá² JSX áá±ážáá¯á¶ážá¡ááá¯ááºáž <Element />
ááá¯á· áá±á«áºáá¯á¶ážáá¬ážáá¬ááᯠááœá±á·ááá«áááá·áºáááºá ááá¯ážááá¯áž Function ááá¯ááºáá±á¬á·áá² React Component ááŒá
áºááœá¬ážááŒá® ááá¯á·ááá¯á·áá«á áá®ááá¯áá±á«áºáá°á
ááºááŸá¬ title
Attribute ááᯠááá·áºáá±ážáá¬ážááá¯á· á¡á²á·áá® Attribute / Property ááᯠElement
Function á {props.title}
ááá¯ááŒá®áž ááŒááºáá¯á¶ážáá¬ážáá¬ááᯠááœá±á·áááá¯ááºáá«áááºá
áá®áááºážáá²á· React Component ááœá±ááᯠá¡áá¯á¶ážááŒá¯áá²á·á¡áá« Property ááœá±ááᯠáááºááá·áºáááºážáá±ážááá¯á·ááá¯ááºááŒááºážáá² ááŒá áºáá«áááºá áá°ážáá°á ááºážáááºááŒáá·áºááá¯ááºáá«áááºá
áá®áá¯ááºááá¯áá² áá±á¬ááºáá±ážáááºáž áá áºáááºážáá²á· áááºáá¶áá±á¬áºááŒáá«á¥á®ážáááºá áá¯ááºáá«áááºá áá±ážáááºážááœá± áá»á¬ážááœááºážááŸáá«áááºá áá®ááá¯áá»á¬ážááœááºážááá¯áá² áá±á·áá¬áá°ááœá± áá»ááºá ááááºáá¯ááºááŒáá¬áá«á áá®áá±áá¬ááŸá¬ á¡áá°áá°áá²ááá¯áá¬ááᯠááá á±áá»ááºááá¯á· áá áºáá¯áá²á·áá áºáᯠááááºááŸáá¯ááºážááŸáẠáá±á¬áºááŒáá±áá¬áá«á
<div id="app"></div>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script type="text/babel">
class Element extends React.Component {
render() {
return (
<p title={this.props.title}>
Hello from React Class Component
</p>
)
}
}
ReactDOM.render(
<Element title="Prop Title" />,
document.getElementById("app")
)
</script>
áá®áá
áºáá«áá±á¬á· class
áá±ážáá¯á¶ážááᯠáá¯á¶ážáá¬ážáá«áááºá React.Component
ááᯠExtend áá¯ááºáá±ážáááŒá®áž render()
Method áááŒá
áºááá±áá«áááºááá«áááºá ááá°áá¬ááŸá¬ render()
á <p>
Element áá
áºáá¯ááᯠReturn ááŒááºáá±ážááŒááºážááŒá
áºáá«áááºá á¡áááºá Function ááá°áá¬ááŸá¬ááá¯áá² ReactDOM.render()
á <Element />
ááᯠáá±á«áºáá°á
ááºááŸá¬ title
Property ááᯠááá·áºáá±ážáá¬ážáá«áááºá á¡á²á·áá®ááᯠááá·áºáá±ážáá¬áá²á· Property ááᯠClass á¡ááœááºážááŸá¬ this.props
ááá±áá
áºááá·áº ááŒááºááẠá¡áá¯á¶ážáá»áá¬ážáá«áááºá
ááá¯ááºááá¯ááºáá°ážáá° á ááºážáááºááŒáá·áºááá¯ááºáá«áááºá
á¡áá±á«áºáá¡ááá·áºááœá±ááᯠáááŒáá·áºáá² áá®áá±á¬ááºáá¯á¶ážá¡ááá·áºááᯠááá¯ááºááá¯áẠáááºážááŒáá·áºááẠáá»ááºá ááááºáá»ááºá áá¬ááŒá®ážáá«á áá«áá±ááá·áº áá®áá±áá¬ááŸá¬ á á¬áááºáá°á á¡áááºá·ááá¯áẠáá±á·áá¬ááŒáá·áºáá¬áá²á·á¡ááœáẠááá¯ááŒá®ážáá¬ážáááºááœááºááœá¬ážááŒá®ááá¯á· áááºáá«áááºá áá®á á¬áá áºáá¯ááºáá²á·áá±á¬á· áááºá á¯á¶áá«á·ááá²á áááºááŒáá·áºá áá¬ááœá± á¡áá»á¬ážááŒá®ážááŸááá±ážáá¬áá±á«á·á áá«áá±ááá·áº áá®á á¬á á ááºážá á¬ážáá¯á¶á ááºážá á¬ážáááºážáá áºáᯠáá»áá±ážááá¯ááºááá¯á· áááºáá±á·áá¬áá²á·áá±áá¬ááŸá¬ á¡áá±á¬ááºá¡áá° ááŒá áºá á±ááŸá¬áá«á
áá±á¬ááºáá¯á¶ážáá áºáá¯á¡áá±áá²á· á¡áá±á«áºááááºážá¡á¬ážáá¯á¶ážááᯠáá±á«ááºážáá¯á¶ážááŒáá«áááºá á¡áá¯á¶ážáááºáá²á·áááºáž ááá¯ááºáááá¯á áá±ážááá·áºáá²á· áááºážáááºáž ááá¯ááºáá«áá°ážá áá±ážáááºážááœá±ááœá¬áá±ááá·áº áá áºáááºáá±á¬á· á¡áá°áá°áá²ááá¯áá¬ááᯠááá¯ááºááŒáá»ááºááá¯á· á¡áá¯ááᯠáá±á«ááºážáá¯á¶ážááŒáá¬áá«á áá±á·áá¬ááŒáá·áºáá«á
<div id="app"></div>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script type="text/babel">
var First = <li>First Component</li>
function Second(props) {
return (<li>Second Component</li>)
}
class Third extends React.Component {
render() {
return (
<ul>
{First}
<Second />
</ul>
)
}
}
ReactDOM.render(<Third />, document.getElementById("app"))
</script>
ááá¯ážááá¯áž Variable Component áá±á¬ Function Component áá±á¬ Class Component ááá¯áá« áá±á«ááºážáá¯á¶ážááá¯ááºáá¬áá«á áá áºáá»áŸá±á¬ááºáá¯á¶áž á¡áááºááŒá±ááŒá®áž áá®áá±áá¬áá±á¬ááºá០áá»ááºá ááááºááœá¬ážáá«ááá¬áž? ááááºáá«áá²á· á¡á á¡áá¯á¶áž áá±á¬ááºáá áºáá±á«ááºáá±á¬áẠááŒááºááŒáá·áºááá¯ááºáá«á ááá±á¬ááá¬áááᯠáá±áá»á¬áá¬ážáááºááœá¬ážáá«áááá·áºáááºá
áá»á±ážáá°ážáááºáá«ááẠááá¬