glendix/react/hook

Values

pub fn get_ref(ref: react.Ref(a)) -> a

ref 현재 값 읽기

pub fn set_ref(ref: react.Ref(a), value: a) -> Nil

ref 현재 값 설정

pub fn use_callback(
  callback: fn(a) -> b,
  deps: List(c),
) -> fn(a) -> b

메모이제이션된 콜백

pub fn use_context(context: react.Context(a)) -> a

Context 값 읽기

pub fn use_debug_value(value: a) -> Nil

커스텀 훅 디버그 값 (React DevTools에 표시)

pub fn use_debug_value_(value: a, format: fn(a) -> String) -> Nil

커스텀 훅 디버그 값 + 포맷 함수

pub fn use_deferred_value(value: a) -> a

값 지연 처리

pub fn use_effect(effect_fn: fn() -> Nil, deps: List(a)) -> Nil

의존성 배열과 함께 실행

pub fn use_effect_always(effect_fn: fn() -> Nil) -> Nil

매 렌더링마다 실행 (deps 없음)

pub fn use_effect_always_cleanup(
  setup: fn() -> fn() -> Nil,
) -> Nil

매 렌더링마다 실행 + cleanup

pub fn use_effect_cleanup(
  setup: fn() -> fn() -> Nil,
  deps: List(a),
) -> Nil

의존성 배열과 함께 실행 (cleanup 함수 반환)

pub fn use_effect_once(effect_fn: fn() -> Nil) -> Nil

마운트 시 한 번만 실행 (deps = [])

pub fn use_effect_once_cleanup(setup: fn() -> fn() -> Nil) -> Nil

마운트 시 한 번만 실행 + cleanup

pub fn use_id() -> String

SSR-safe 고유 ID 생성

pub fn use_imperative_handle(
  ref: react.Ref(a),
  create: fn() -> a,
  deps: List(b),
) -> Nil

부모에게 노출하는 ref 인스턴스 커스터마이징

pub fn use_insertion_effect(
  effect_fn: fn() -> Nil,
  deps: List(a),
) -> Nil

의존성 배열과 함께 삽입 이펙트 실행

pub fn use_insertion_effect_always(effect_fn: fn() -> Nil) -> Nil

매 렌더링마다 삽입 이펙트 실행 (deps 없음)

pub fn use_insertion_effect_always_cleanup(
  setup: fn() -> fn() -> Nil,
) -> Nil

매 렌더링마다 삽입 이펙트 실행 + cleanup

pub fn use_insertion_effect_cleanup(
  setup: fn() -> fn() -> Nil,
  deps: List(a),
) -> Nil

의존성 배열과 함께 삽입 이펙트 실행 (cleanup 함수 반환)

pub fn use_insertion_effect_once(effect_fn: fn() -> Nil) -> Nil

마운트 시 한 번만 삽입 이펙트 실행 (deps = [])

pub fn use_insertion_effect_once_cleanup(
  setup: fn() -> fn() -> Nil,
) -> Nil

마운트 시 한 번만 삽입 이펙트 실행 + cleanup

pub fn use_layout_effect(
  effect_fn: fn() -> Nil,
  deps: List(a),
) -> Nil

의존성 배열과 함께 레이아웃 이펙트 실행

pub fn use_layout_effect_always(effect_fn: fn() -> Nil) -> Nil

매 렌더링마다 레이아웃 이펙트 실행 (deps 없음)

pub fn use_layout_effect_always_cleanup(
  setup: fn() -> fn() -> Nil,
) -> Nil

매 렌더링마다 레이아웃 이펙트 실행 + cleanup

pub fn use_layout_effect_cleanup(
  setup: fn() -> fn() -> Nil,
  deps: List(a),
) -> Nil

의존성 배열과 함께 레이아웃 이펙트 실행 (cleanup 함수 반환)

pub fn use_layout_effect_once(effect_fn: fn() -> Nil) -> Nil

마운트 시 한 번만 레이아웃 이펙트 실행 (deps = [])

pub fn use_layout_effect_once_cleanup(
  setup: fn() -> fn() -> Nil,
) -> Nil

마운트 시 한 번만 레이아웃 이펙트 실행 + cleanup

pub fn use_lazy_state(init_fn: fn() -> a) -> #(a, fn(a) -> Nil)

지연 초기화 useState (비싼 초기값 계산 방지, init_fn은 마운트 시 한 번만 호출)

pub fn use_lazy_state_(
  init_fn: fn() -> a,
) -> #(a, fn(fn(a) -> a) -> Nil)

지연 초기화 useState + 업데이터 함수 변형

pub fn use_memo(compute: fn() -> a, deps: List(b)) -> a

메모이제이션된 값 계산

pub fn use_optimistic(state: a) -> #(a, fn(a) -> Nil)

낙관적 UI 업데이트

pub fn use_optimistic_(
  state: a,
  update_fn: fn(a, b) -> a,
) -> #(a, fn(b) -> Nil)

낙관적 UI 업데이트 (리듀서 변형 — 업데이트 함수로 병합 로직 지정)

pub fn use_reducer(
  reducer: fn(state, action) -> state,
  initial: state,
) -> #(state, fn(action) -> Nil)

리듀서 기반 상태 관리

pub fn use_ref(initial: a) -> react.Ref(a)

ref 생성

pub fn use_state(initial: a) -> #(a, fn(a) -> Nil)

상태 훅. #(현재값, 세터함수) 튜플 반환

pub fn use_state_(initial: a) -> #(a, fn(fn(a) -> a) -> Nil)

useState 업데이터 함수 변형 (stale closure 방지) 세터에 fn(prev) -> next 형태의 업데이터 함수를 전달

pub fn use_sync_external_store(
  subscribe: fn(fn() -> Nil) -> fn() -> Nil,
  get_snapshot: fn() -> a,
) -> a

외부 스토어 구독 (Redux/Zustand 통합용)

pub fn use_transition() -> #(Bool, fn(fn() -> Nil) -> Nil)

비긴급 상태 업데이트 표시

Search Document