diff --git a/src/codemirror_bridge.rs b/src/codemirror_bridge.rs index 3310d76..2b4136d 100644 --- a/src/codemirror_bridge.rs +++ b/src/codemirror_bridge.rs @@ -179,7 +179,7 @@ pub mod wasm { fn drop(&mut self) { // 销毁 JS 侧编辑器;随后 _on_change/_on_ready 字段按声明顺序释放, // 释放 wasm-bindgen 函数表槽位。 - let _ = self.instance.destroy(); + self.instance.destroy(); } } } diff --git a/src/components/footer.rs b/src/components/footer.rs index c7ea308..3440a2e 100644 --- a/src/components/footer.rs +++ b/src/components/footer.rs @@ -42,10 +42,10 @@ pub fn Footer() -> Element { // 因为 server 端该组件只跑一次 SSR)。 #[cfg(target_arch = "wasm32")] use_event_listener( - || web_sys::window(), + web_sys::window, "scroll", // 滚动事件触发时复用同样的阈值判断。 - move || sync_visible(), + sync_visible, ); // 挂载时根据当前滚动位置初始化一次按钮可见性。 @@ -101,7 +101,7 @@ fn scroll_to_top() { let options = web_sys::ScrollToOptions::new(); options.set_top(0.0); options.set_behavior(web_sys::ScrollBehavior::Smooth); - let _ = window.scroll_to_with_scroll_to_options(&options); + window.scroll_to_with_scroll_to_options(&options); if let Ok(history) = window.history() { let _ = history.replace_state_with_url(&wasm_bindgen::JsValue::NULL, "", Some(" ")); diff --git a/src/hooks/event_listener.rs b/src/hooks/event_listener.rs index bf2eceb..98b24cb 100644 --- a/src/hooks/event_listener.rs +++ b/src/hooks/event_listener.rs @@ -42,8 +42,9 @@ where // 用 use_hook 持有 (Closure, target),在整个组件生命周期内复用; // use_drop 时 take 出来移除监听,防止泄漏。 - let state: Rc, T)>>> = - use_hook(|| Rc::new(RefCell::new(None))); + type ListenerState = + Rc, T)>>>; + let state: ListenerState = use_hook(|| Rc::new(RefCell::new(None))); let state_for_drop = state.clone(); // use_effect 的回调是 FnMut(可能多次运行),但 acquire 是 FnOnce、handler 要 diff --git a/src/pages/admin/system.rs b/src/pages/admin/system.rs index 079f398..c6dadc4 100644 --- a/src/pages/admin/system.rs +++ b/src/pages/admin/system.rs @@ -721,12 +721,9 @@ fn SqlConsoleTab() -> Element { opts.set_on_change(&on_change); opts.set_on_ready(&on_ready); - match codemirror_bridge::get_module().create("sql-editor", &opts) { - Ok(Some(inst)) => { - let handle = codemirror_bridge::EditorHandle::new(inst, on_change, on_ready); - editor_handle.set(Some(handle)); - } - _ => {} + if let Ok(Some(inst)) = codemirror_bridge::get_module().create("sql-editor", &opts) { + let handle = codemirror_bridge::EditorHandle::new(inst, on_change, on_ready); + editor_handle.set(Some(handle)); } // 异步拉取 schema 注入补全 @@ -1197,9 +1194,8 @@ fn BackupTab() -> Element { active_progress.set(Some(p)); if done { // 刷新列表(备份完成后新文件出现)并清理任务态 - match list_backups().await { - Ok(list) => backups_f.set(list), - _ => {} + if let Ok(list) = list_backups().await { + backups_f.set(list); } active_task_id.set(None); busy_f.set(false); diff --git a/src/pages/admin/write.rs b/src/pages/admin/write.rs index 493555f..4f91a54 100644 --- a/src/pages/admin/write.rs +++ b/src/pages/admin/write.rs @@ -297,7 +297,7 @@ fn write_editor(post_id: Option) -> Element { // 将逗号分隔的标签字符串转换为列表。 // 同时支持半角/全角逗号与分号,避免中文输入法下的全角标点被误并入单个标签。 let tags_list: Vec = tags() - .split(|c| matches!(c, ',' | ',' | ';' | ';')) + .split([',', ',', ';', ';']) .map(|t| t.trim().to_string()) .filter(|t| !t.is_empty()) .collect();