我是Rust和Yew的新手,我需要一些帮助来在Yew的应用组件中应用useState钩子,看起来像这样:
struct BookList
use gloo_net::http::Request;
use yew::prelude::*;
#[function_component(App)]
pub fn app() -> Html {
let (books: UseStateHandle<Vec<BookList>> = use_state(|| vec![]);
async fn fetch_books() {
let response: Vec<> = Request::get("http://localhost:3000/books");
let cloned_books = books.clone():
cloned_books.set(response.data);
}
html! {
<div>
{"App"}
</div>
}
}
我得到了错误不匹配的类型。在我有父元素的地方,它说它期望一个结构体UseStateHandle
, found元组。
我不确定为什么在books
之前需要一个左括号,但我认为这就是与元组混淆的地方。
let books = use_state(|| vec![]);
如果你在获取数据时指定类型,我推测Rust应该足够聪明,可以从后面的上下文中理解这应该是BookList
向量的句柄。因此,我将在这里赋值类型(您几乎已经有了,但它缺少类型):
let response: Vec<BookList> = Request::get("http://localhost:3000/books");
请注意,我没有尝试过这些。请随时评论后续的例外情况,以便我们一起详细说明。