19 个版本
新 0.6.0-alpha.2 | 2024 年 8 月 7 日 |
---|---|
0.5.6 | 2024 年 7 月 18 日 |
0.5.0 | 2024 年 3 月 28 日 |
0.4.3 | 2023 年 12 月 7 日 |
0.2.0 | 2022 年 3 月 9 日 |
#185 in GUI
14,985 每月下载量
用于 27 个工具包 (8 个直接使用)
585KB
11K SLoC
Dioxus Hooks
概述
dxosus-hooks
包含一些 Dioxus 用的基本有用钩子,如
- use_signal
- use_effect
- use_resource
- use_memo
- use_coroutine
与 React 不同,这些钩子都不是基础的,因为它们都是基于原生的 use_hook
构建的。您可以在自己的代码中使用 自定义钩子 扩展这些钩子。如果您认为它们对更广泛的社区有用,您可以打开一个 PR 将您的钩子添加到 Dioxus Awesome 列表中。
状态速查表
如果您不确定要使用哪个钩子,可以使用此速查表来帮助您决定
状态位置
根据您需要访问状态的位置,您可以将状态放在以下三个位置之一
位置 | 您可以在哪里访问状态? | 适用于库吗? | 示例 |
---|---|---|---|
钩子 | 您传递给它的任何组件 | ✅ | use_signal(|| 0) ,use_memo(|| state() * 2) |
上下文 | 任何子组件 | ✅ | use_context_provider(||Signal::new(0)) , use_context::<Signal<i32>>() |
全局 | 您的应用程序中的任何内容 | ❌ | 信号::全局(|| 0) |
派生状态
如果您没有状态初始值,您可以使用闭包或异步函数从其他状态派生您的状态
钩子 | 响应式(当依赖项更改时重新运行) | 异步 | 记住输出 | 示例 |
---|---|---|---|---|
use_memo |
✅ | ❌ | ✅ | use_memo(move || count() * 2) |
use_resource |
✅ | ✅ | ❌ | use_resource(move || reqwest::get(format!("/users/{user_id}"))) |
use_future |
❌ | ✅ | ❌ | use_future(move || println!("{:?}", reqwest::get(format!("/users/{user_id}")))) |
持久状态
核心钩子库不提供持久状态的钩子,但您可以使用来自 dioxus-sdk 和 dioxus-router 的钩子扩展核心钩子以提供持久状态管理。
状态 | 可共享 | 示例 |
---|---|---|
use_persistent |
❌ | use_persistent("unique_key", move ||initial_state) |
路由器<路由> {} |
✅ | #[derive(Routable,Clone,PartialEq)] enum 路由 { #[route("/user/:id")]主页{id: u32 } } |
贡献
- 在我们的 问题跟踪器 上报告问题。
- 加入discord并提问!
许可
本项目采用 MIT 许可证。
除非您明确声明,否则您提交给 Dioxus 的任何有意贡献都应按照 MIT 许可证许可,不附带任何附加条款或条件。
依赖项
~2.5–8.5MB
~67K SLoC