Global Dot di NodeJS

Hati-hati pake objek global. di NodeJS. Nilai yang disimpen di situ di-share semua requests.

Contoh di bawah, semua request yg masuk setelah “A” dapet global.name = A biarpun asalnya dari user/browser/client lain.

router.get('/', function(req, res, next) {

  if(req.cookies.name === 'A') {
    global.name = 'A'
    console.log('REQUEST FROM A: global.name', global.name)    
  } else {
    console.log('REQUEST FROM OTHERS: global.name', global.name)
  }

  res.render('index', { title: global.name });
});

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 →