Tahap selanjutnya untuk membangun Simple Todo App adalah membuat komponen-komponen yang dibutuhkan dan melakukan templating dengan style yang sudah ada. Berikut tampilan template dan bagian-bagian komponen dari Simple Todo App yang akan kita buat.
Oke sekarang kita masuk ke bagian kode. Pertama buat folder baru dengan nama components di dalam folder src. Kemudian Buat 3 file dengan nama Header.js, TodoList.js, TodoItem.js. Tuliskan kode berikut pada masing-masing file.
src/components/Header.js
const Header = () => {
return (
<div id="todo-header" className="header">
<h2>Simple Todo App</h2>
<input type="text" />
<span className="add-button">Add</span>
</div>
);
}
export default Header;
src/components/TodoList.js
import TodoItem from './TodoItem'
const TodoList = () => {
return (
<ul id="todo-list">
<TodoItem />
<TodoItem />
<TodoItem />
</ul>
);
}
export default TodoList;
src/components/TodoItem.js
const TodoItem = () => {
return (
<li>Hit the gym <span class="close">x</span></li>
);
}
export default TodoItem;
Kita sudah membuat 3 komponen dan sekarang kita tinggal memasang komponen tersebut pada file src/App.js. Buka file src/App.js dan ubah kodenya menjadi seperti di bawah ini.
src/App.js
import Header from "./components/Header";
import TodoList from "./components/TodoList";
function App() {
return (
<div className="App">
<div className="content">
<Header />
<TodoList />
</div>
</div>
);
}
export default App;
Terakhir untuk mempercantik tampilan silahkan copy seluruh kode di bawah ini dan paste ke file src/index.css.
src/index.css
.content {
max-width: 720px;
margin: 0 auto;
}
/* Include the padding and border in an element's total width and height */
* {
box-sizing: border-box;
}
/* Remove margins and padding from the list */
ul {
margin: 0;
padding: 0;
}
/* Style the list items */
ul li {
cursor: pointer;
position: relative;
padding: 12px 8px 12px 40px;
background: #eee;
font-size: 18px;
list-style-type: none;
transition: 0.2s;
/* make the list items unselectable */
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* Set all odd list items to a different color (zebra-stripes) */
ul li:nth-child(odd) {
background: #f9f9f9;
}
/* Darker background-color on hover */
ul li:hover {
background: #ddd;
}
/* When clicked on, add a background color and strike out text */
ul li.checked {
background: #888;
color: #fff;
text-decoration: line-through;
}
/* Add a "checked" mark when clicked on */
ul li.checked::before {
content: '';
position: absolute;
border-color: #fff;
border-style: solid;
border-width: 0 2px 2px 0;
top: 10px;
left: 16px;
transform: rotate(45deg);
height: 15px;
width: 7px;
}
/* Style the close button */
.close {
position: absolute;
right: 0;
top: 0;
padding: 12px 16px 12px 16px;
}
.close:hover {
background-color: #e74c3c;
color: white;
}
/* Style the header */
.header {
background-color: #34495e;
padding: 30px 40px;
color: white;
text-align: center;
}
/* Clear floats after the header */
.header:after {
content: "";
display: table;
clear: both;
}
/* Style the input */
input {
margin: 0;
border: none;
border-radius: 0;
width: 75%;
padding: 10px;
float: left;
font-size: 16px;
}
/* Style the "Add" button */
.add-button {
padding: 10px;
width: 25%;
background: #d9d9d9;
color: #555;
float: left;
text-align: center;
font-size: 16px;
cursor: pointer;
transition: 0.3s;
border-radius: 0;
}
.add-button:hover {
background-color: #bbb;
}
Buka kembali halaman http://localhost:3000/ dan tampilan aplikasi kita akan terlihat seperti gambar di bawah ini.
Source Code: