Compound Component

Compound component adalah sebuah komponen yang terdiri dari komponen-komponen yang lebih kecil. Komponen-komponen ini kalo sendirian ga ada gunanya. Kalo di HTML biasa salah satu contohnya adalah komponen <select>.

<select>
  <option />
  <option />
</select>

Pattern ini adalah alternatif dari render-props. Tujuannya sama, bikin komponen yang fleksibel & struktur komponen children-nya terserah user/consumer.

useContext untuk Global State

Nggak semua aplikasi React butuh Redux/MobX atau library sejenisnya. Untuk banyak kasus kita bisa pake React Context aja.

Context punya dua bagian utama yaitu Provider yg nyediain variabel & fungsi-fungsi global, dan Consumer sebagai pemakainya.

Untuk bikin Provider, pertama kita buat context pake createContext(). Terus kita pake komponen Context.Provider.

import React, { useState, createContext } from 'react';
import Header from './Header';
import Mailbox from './Mailbox';
import './styles.scss';

export const AppContext = createContext();

export default function App() {
  // global state
  const [user, setUser] = useState(null);

  return (
    <AppContext.Provider
      value={{
        user,
        setUser
      }}
    >
      <div className="App">
        <Header />
        <Mailbox />
      </div>
    </AppContext.Provider>
  );
}

Kenapa objek context-nya perlu diekspor? Biar bisa dipake di komponen-komponen lain yang jadi consumer-nya.

Continue reading →

8 Perintah Git Esensial

Beberapa perintah Git yang esensial selain yg dasar-dasar. Wajib tau, lebih bagus kalo hafal.

1. Bikin Branch dari Commit Tertentu

Bikin branch dari commit tertentu.

$ git checkout -b [nama branch] [commit hash]

Bikin branch lokal yang nge-track remote branch yang udah ada,

$ git checkout -b [nama branch] --track origin/[nama branch]

2. Merge Non-FF

Kalo mau selalu ada merge-commit tambahin opsi --no-ff.

$ git merge A --no-ff

Bedanya pake flag --no-ff ato nggak kira-kira begini:

3. Stash

Git stash utk nyimpen perubahan konten tanpa harus commit.

Continue reading →

Python 101: Dictionary

Dictionary adalah tipe data yang nggak berurutan. Isinya koleksi data dalam bentuk pasangan key & value, sama dengan Object di JavaScript. Bedanya kalo bikin key di Python harus pake string.

Jadi kode begini, yg valid di JS, di Python ga bisa dipake:

person = { name: 'boss' }

# error
NameError: name 'name' is not defined

Cara aksesnya juga sama dengan Object di JS, pake sintaks [key]. Tapi di Python nggak bisa pake dot-notation.

person = { 'name': 'boss', 'age': 40 }

print(person['name'])
# output
boss


print(person.age)
# error
AttributeError: 'dict' object has no attribute 'age'

Pake get() untuk Mengakses Value

Kalo pake bracket-notation, kita bakal dapet error kalo key-nya ga ada.

person = { 'name': 'boss', 'age': 40 }
print(person['gender'])

#error
KeyError: 'gender'

Untuk menghindari error begini, kita pake get().

Continue reading →