Tutorial CRUD dengan React #2: Komponen dan Template


Tutorial CRUD dengan React #2: Komponen dan Template

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:


Rizqi Maulana
Backend Developer

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami