rust 使用状态在Yew

evrscar2  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(132)

我是Rust和Yew的新手,我需要一些帮助来在Yew的应用程序组件中应用useState钩子,看起来像这样:

  1. struct BookList
  2. use gloo_net::http::Request;
  3. use yew::prelude::*;
  4. #[function_component(App)]
  5. pub fn app() -> Html {
  6. let (books: UseStateHandle<Vec<BookList>> = use_state(|| vec![]);
  7. async fn fetch_books() {
  8. let response: Vec<> = Request::get("http://localhost:3000/books");
  9. let cloned_books = books.clone():
  10. cloned_books.set(response.data);
  11. }
  12. html! {
  13. <div>
  14. {"App"}
  15. </div>
  16. }
  17. }

我得到了错误不匹配的类型。在我有括号的地方,它说它需要一个结构UseStateHandle,找到元组。

rn0zuynd

rn0zuynd1#

我不知道为什么在books之前需要一个开括号,但我认为这就是与元组混淆的原因。

  1. let books = use_state(|| vec![]);

如果你在获取数据时分配类型,我推测Rust应该足够聪明,能够从后面的上下文中理解这应该是BookList向量的句柄。因此,我会在那里分配类型(你几乎已经有了,但它缺少类型):

  1. let response: Vec<BookList> = Request::get("http://localhost:3000/books");

请注意,我没有尝试过这些。请随意评论后续例外情况,以便我们可以一起详细说明。

相关问题