E-Book Gratis: ReactJS untuk Pemula

Pengen belajar ReactJS tapi bingung mulai dari mana? Udah baca-baca tutorial tapi penuh jargon yang malah bikin mumet?

E-book ini mungkin cocok buat Anda. 🙂

E-book ini bisa didapatkan di Leanpub.

NOTE1: E-book ini bisa diunduh gratis. Silakan geser slider harga di halaman Leanpub ke angka 0.

NOTE2: Silakan link Leanpub-nya di-share. Kalo bisa jangan langsung PDF-nya karena saya juga pengen tau berapa banyak orang yang unduh ebook ini.

NOTE3: Ebook ini bakal diupdate terus kalo ada materi baru yang sekiranya menarik untuk ditambahkan atau mungkin ada materi yang perlu dikoreksi.

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 →