Module 6 – Counter App එක පියවරෙන් පියවර ගොඩනගමු
සුභ පැතුම්! ඔබ React හි මූලිකම කොටස් ඉගෙනගෙන අවසන්. දැන් අපි ඒ සියල්ල එකට එකතු කර, අපගේ පළමු සම්පූර්ණ යෙදුම සරල පියවර වලින් ගොඩනගමු.
📂 වත්මන් Folder ව්යුහය
මෙම module එකේදී, අපි ප්රධාන වශයෙන් App.jsx file එක සමඟ වැඩ කරමු. ඔබගේ project folder ව්යුහය මේ වන විට මෙසේ දිස්විය යුතුය:
/src
├── /components
│ └── Header.jsx
├── App.css
├── App.jsx <-- අපි සියලුම කේතය යොදන්නේ මෙතන
├── index.css
└── main.jsx
1. අපගේ ඉලක්කය
අපගේ ඉලක්කය සරලයි: count අගයක් පෙන්වන, සහ button එකක් click කළ විට එම අගය 1කින් වැඩි කරන app එකක් සෑදීම.
2. මූලික අමුද්රව්ය තුන
මෙම app එක සෑදීමට අපට පෙර modules වලින් ඉගෙනගත් කරුණු 3ක් අවශ්ය වේ:
- Components: අපගේ යෙදුමේ UI ව්යුහය සෑදීමට (`App.jsx`).
- State: count අගය "මතක තබා ගැනීමට" (`useState`).
- Events: button click එකට "ප්රතිචාර දැක්වීමට" (`onClick`).
3. App Component එකේ සැකිල්ල සකස් කිරීම
පළමුව,
App.jsx file එකේ ඇති සියලුම default කේතය ඉවත් කර, මෙම සරල සැකිල්ල (template) යොදන්න.
import './App.css';
import Header from './components/Header.jsx'; // Don't forget to import the Header
function App() {
// අපේ state සහ functions මෙතනට එනවා
return (
<>
<Header />
<main>
{/* අපේ UI එක මෙතනට එනවා */}
</main>
</>
);
}
export default App;
4. මතකය එක් කිරීම (Adding State)
දැන්, count අගය මතක තබා ගැනීමට state variable එකක් සාදමු.
useStatehook එක React වෙතින් import කරන්න.Appfunction එක තුළ,useStatecall කරcountසහsetCountසාදාගන්න.
import { useState } from 'react'; // Step 1
import './App.css';
import Header from './components/Header.jsx';
function App() {
const [count, setCount] = useState(0); // Step 2
return (
//...
);
}
export default App;
5. UI එක ගොඩනැගීම (Building the UI)
return statement එක තුළ, අපට අවශ්ය UI එක JSX භාවිතයෙන් ලියමු. {count} මගින් state අගය පෙන්වන බව සලකන්න.
return (
<>
<Header />
<main style={{ padding: '30px', textAlign: 'center' }}>
<h2>React Counter App</h2>
<p style={{ fontSize: '3rem', fontWeight: 'bold' }}>
{count}
</p>
<button>+ Add</button>
</main>
</>
);
6. Button එකට ක්රියාකාරීත්වය ලබා දීම
දැන් button එක click කළ විට state එක update කළ යුතුය. ඒ සඳහා අපි
onClick event එක භාවිතා කරමු.
<button onClick={ ... }>+ Add</button>
7. Event Handler Function එක නිර්මාණය
onClick එකට ලබා දීමට function එකක් අවශ්යයි. මෙම function එක, setCount call කර, පවතින count අගයට 1ක් එකතු කරයි.
function handleAdd() {
setCount(count + 1);
}
8. සියල්ල එකට සම්බන්ධ කිරීම
දැන්, අප සෑදූ
handleAdd function එක, button එකේ onClick event එකට ලබා දෙමු.
// ... inside the App component
function handleAdd() {
setCount(count + 1);
}
return (
<main style={{ padding: '30px', textAlign: 'center' }}>
{/* ... other elements */}
<button onClick={handleAdd}>+ Add</button>
</main>
);
9. සරල ක්රමය: Inline Function
වෙනම function එකක් නිර්මාණය කරනවා වෙනුවට, සරල ක්රියාවන් සඳහා
onClick එක තුළම arrow function එකක් ලිවීම ඉතා සුලභ වේ.
මෙය ඉහත 7 සහ 8 පියවර දෙකම එකට කරන කෙටි ක්රමයකි.
<button onClick={() => setCount(count + 1)}>+ Add</button>
10. අවසන් කේතය සහ ඔබගේ කාර්යය
සියලුම පියවර එකතු කළ විට, අපගේ App.jsx file එක මෙසේ දිස්වේ. මෙම කේතය ඔබගේ file එකට copy කරගන්න.
import { useState } from 'react';
import Header from './components/Header.jsx';
import './App.css';
function App() {
const [count, setCount] = useState(0);
return (
<>
<Header />
<main style={{ padding: '30px', textAlign: 'center' }}>
<h2 style={{ marginBottom: '20px' }}>React Counter App</h2>
<p style={{ fontSize: '3rem', fontWeight: 'bold', color: '#007bff' }}>
{count}
</p>
<button
onClick={() => setCount(count + 1)}
style={{
padding: '12px 25px',
fontSize: '1.2rem',
cursor: 'pointer',
backgroundColor: '#007bff',
color: 'white',
border: 'none',
borderRadius: '5px'
}}
>
+ Add
</button>
</main>
</>
);
}
export default App;
ඔබගේ කුඩා කාර්යය: Browser එකට ගොස් "+ Add" button එක click කරන්න. Count අගය වැඩි වෙනවාද? මෙම ක්රියාවලිය පිටුපස අප ඉගෙනගත් සියලුම පියවර ක්රියාත්මක වන ආකාරය මෙනෙහි කරන්න. ඔබ දැන් React හි මූලිකම building block එක සාර්ථකව නිර්මාණය කර ඇත!