Tutorial CRUD dengan React #2: Komponen dan Template


Rizqi Maulana
Backend Developer

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
KEBIJAKAN KOMENTAR

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

KOMENTAR