yggdrasil/hooks/mod.rs
1//! 共享的 Leptos Hooks 模块。
2//!
3//! 该模块集中管理可在组件树中复用的自定义 Hook,包括:
4//! - 通用 DOM 事件监听(注册 + 自动卸载清理)
5//! - 元素接近视口的单向激活判断
6//! - 客户端分页数据加载
7//!
8//! 评论草稿持久化(localStorage 读写)已迁至 `crate::utils::comment_storage`,
9//! 因为它是纯工具函数而非渲染期 Hook。
10//!
11//! 骨架屏延迟渲染已统一至 `crate::components::skeletons::delayed_skeleton::DelayedSkeleton` 组件。
12//!
13//! 约定:Leptos 组件函数体只执行一次,Hook 在组件函数体内调用(需要 reactive owner),
14//! 浏览器专属逻辑放在 `Effect` 内(服务端不执行),清理统一用 `on_cleanup`。
15
16/// 通用 DOM 事件监听 Hook(add/remove_event_listener 生命周期封装)。
17pub mod event_listener;
18
19/// 元素接近视口的单向可见性激活 Hook(use_near_viewport)。
20pub mod near_viewport;
21
22/// 客户端数据加载 Hook(use_paginated)。
23pub mod query;
24
25/// 页面 SSR 数据资源(route_data:值类型擦除为 JSON 文本,取数函数随分包加载)。
26pub mod ssr_resource;
27
28pub use near_viewport::use_near_viewport;