๐React - ืืืจืื
ืืืืื ืฉืื ืืืจ ืฉืื ืขื ื ืืืื ืฆื ืืคืจืงืื ื ืคืจืืื.
๐ React Components โ ืืืืจืื ืืืื
1. ืืื Component ?
Component ืืื ืคืื ืงืฆืืืช JavaScript
ืฉืืืืืจื JSX
. ืืื ืืืืฆื ืืืืืช-UI ืขืฆืืืืช ืืืื ื ืืชื ืืืฉืชืืฉ ืื ืฉืื, ืืืชืจ ืืืืื ืืงืืืช ืืืืืืง ืืืชื ืืืืืงืืช ืืืืื.
function Header() {
return (
<header>
<h1>ืจืืื Header</h1>
</header>
);
}
function Main() {
return (
<section>
<p>ืจืืื Main</p>
</section>
);
}
function App() {
return (
<div>
<Header />
<Main />
</div>
);
}
ReactDOM.render(<App />, document.getElementById('root'));

2. Properties (props
)
props
ืื ื ืชืื ืื ืืืฆืื ืืื ืฉืืจืืื ืืงืื, ืืื ืืืคื ืืืื ืื ืืฉืืืืฉื ืืืฆืืื ืจืืื.
function Header(props) {
return <h1>ืฉืืื, {props.name}</h1>;
}
function Main(props) {
return <p>ืื ืื ื {props.adjective}</p>;
}
function App() {
return (
<div>
<Header name="React Master" />
<Main adjective="ืืืืฉืื ืืืืืจืื" />
</div>
);
}
3. ืืฆืืจืช ืจืฉืืืืช + keys
function Main(props) {
return (
<ul>
{props.dishes.map(dish => (
<li key={dish}>{dish}</li>
))}
</ul>
);
}
4. ืืืกืคืช ืชืืื ืืช
ื-Next.js ืืืื ืืืฉืชืืฉ ื-<Image />
ืืงืืืช Lazy-load.
๐ The Virtual DOM
React ืืืฆืจ DOM ืืืืืจืื ืืืฉืืื ืืืชื ืืคื ื ืขืืืื:
- React ืืืฆืจ ืขืืชืง ืืืืืจืื
- ืืืฆืข Diff ืืขืืืช ืืงืืื
- ืจืง ืฉืื ืืืื ืืขืืืื ืื ืืคืืขื
ืืืคืฉืจ ืืืฆืืขืื ืืืืืื ืื ืืืชืจืื ืืืืืื.
React ืืขืืื ืืช ื-DOM ืืืืื ืืื ืฉืืฉืชื ื, ืื ืฉืื ืืฉืชื ื ืื ืืขืืืื. ืื ื ืขืฉื ืืืืฆืขืืช virtual DOM.
ืืืืืื, ื ื ืื ืฉืืฉ ืื ืจืฉืืื ืืืืืื ืขืฉืจื ืคืจืืืื. ืืชื ืืกืื ืืช ืืคืจืื ืืจืืฉืื. ืืจืืืช ืืกืืจืืช ื-JavaScript ืืื ื ืืืืฉ ืืช ืืจืฉืืื ืืืื. ืื ืขืืืื ืคื ืขืฉืจื ืืื ืืจืฉ! ืจืง ืคืจืื ืืื ืืฉืชื ื, ืื ืชืฉืขืช ืื ืืชืจืื ื ืื ืื ืืืืฉ ืืืืืง ืืคื ืฉืืื ืืขืืจ.
ืื ืืืช ืจืฉืืื ืืื ื ืขื ืืื ืืืื ืืืคืืคื ืืื ืืจื ื, ืื ืืชืจืื ืืืืจื ืืื ืืืืืื ืืืฉืชืืฉ ืืืืืืืช ืขืฆืืืืช ืฉื ืื ืืคืืืฆืื ืฉื DOM. ืขืืืื ืื ืืขืื ืืคื ืืืขืื ืืืืจื.
ืืื ืืืคื ืืืขืื ืื, ืื ืฉื ื-React ืคืืชืื ืืช ืึพDOM ืืืืืจืืืืื.
ื-React, ืืื ืืืืืืงื DOM ืืฉื ื "ืืืืืืงื DOM ืืืจืืืืื". ืืื ืืืฆืื ืฉื ืืืืืืงื DOM ืืืืชื โ ืืื ืขืืชืง ืงื.
ืืฉ ืื ืืช ืืืชื ืืืคืืื ืื ืฉื DOM ืืืืชื, ืื ืืื ืื ืืฉื ื ืืืืช ืืช ืืืกื. ืืืืคืื ืื ืืจืื ืืืชืจ ืืืืจ, ืื ืื ืืชืืฆืขืช ืจืื ืืืจ ืืืืชื. ืืคืฉืจ ืืืืืื ืืช ืื ืืื ืขืจืืืช ืฉืจืืื, ืืขืืืช ืืขืืจ ืืืืชื ืืื ืืืจืื ืืืืช.
ืืืฉืจ ืืชื ืืขืื ืืืื ื JSX, ืื ืืืืืืงื DOM ืืืจืืืืื ืืชืขืืื.
ืื ื ืฉืืข ืื ืืขืื ืืืคืืื, ืื DOM ืืืจืืืืื ืื ืื ืืืืจ ืฉืื ืื ืืฉืืขืืชื.
ืืืืจ ืืื React ืืฉืืื ืืช ื-DOM ืืืืืจืืืืื ืขื ืชืืื ืช DOM ืืืจืืืืืืช ืฉืฆืืืื ืืคื ื ืืขืืืื.
ืืืืฆืขืืช ืืืฉืืืื ืืื (ื ืงืจืืช diffing), React ืืืื ืืืืืง ืืืื ืืืื ืืื ืืฉืชื ื, ืืจืง ืืืชื ืืื ืืขืืื ื-DOM ืืืืืชื.
ืืืืืื ืฉืื ื ืืงืืื, React ืืืื ืืกืคืืง ืืื ืืื ืืื ืืช ืืืืฉ ืจืง ืืช ืคืจืื ืืจืฉืืื ืืืกืืื ืืืืฉืืืจ ืืช ืฉืืจ ืืจืฉืืื ืืื ืฉืื ืื.
ืื ืขืืฉื ืืืื ืืืื! React ืืืื ืืขืืื ืจืง ืืช ืืืืงืื ืืืจืืฉืื ื-DOM. ืืืื ืืืื ืฉื React ืืืืฆืืขืื ื ืืืข ืืืืื ืจืื ืืืืืืฉ ืื.
ืืกืืืื:
- ืื ื-DOM ืืืืืจืืืืื ืืชืขืืื
- ืืื ืืืฉืืื ืืื ืฉืืื ืืคื ื ืื
- React ืืขืืื ืจืง ืืช ืื ืฉืืฉืชื ื ื-DOM ืืืืืชื
- ืจืง ืื ืืืกื ืืฉืชื ื ืืคืืขื