3个版本 (重大更改)
0.3.0 | 2023年1月21日 |
---|---|
0.2.0 | 2023年1月15日 |
0.1.0 | 2023年1月10日 |
#1205 in WebAssembly
每月22次下载
20KB
397 行
Yew API Hook
结合yew的suspense功能使用异步API请求
用法
#[function_component]
fn App() -> Html {
html! {
<Suspense fallback={html! { {"Loading.."} }}>
<AsyncComponent />
</Suspense>
}
}
#[function_component]
fn AsyncComponent() -> HtmlResult {
let data = use_api(requests::Fetch { id: 0 })?;
match data {
Ok(json) => Ok(html! { {format!("{:#?}", json)} }),
Err(_) => Ok(html! { {"An error occured"} })
}
}
mod requests {
use yew_api_hook::prelude::*;
type ApiResult = anyhow::Result<serde_json::Value>;
#[derive(Clone, Debug, PartialEq)]
pub struct Fetch {
pub id: u64
}
#[async_trait(?Send)]
impl Request for Fetch {
type Error = anyhow::Error;
type Output = serde_json::Value;
async fn run(&self) -> ApiResult {
// Use your favorite http or whatever implementation
get(format!("/entity/{}", self.id)).await
}
}
}
依赖项
~11–15MB
~262K SLoC