fix: Update use_resource docs (#2303)

* fix: Update `use_resource` docs

* Fix use_recourse docs; match ref instead of deref because WeatherLocation isn't copy

---------

Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
This commit is contained in:
Marc EspinandEvan Almloff authored and GitHub committed 2024-04-15 08:28:12 -05:00
1 parent 05b662ee2d
commit b6d3da2b31
1 file changed
+20 -18
+20 -18
View File
@@ -26,30 +26,32 @@ use std::{cell::Cell, future::Future, rc::Rc};
/// # Ok("Sunny".to_string()) /// # Ok("Sunny".to_string())
/// # } /// # }
/// # #[component] /// # #[component]
/// # fn WeatherElement (weather: String ) -> Element { rsx! { p { "The weather is {weather}" } } } /// # fn WeatherElement(weather: String) -> Element {
/// # rsx! { p { "The weather is {weather}" } }
/// # }
/// fn app() -> Element { /// fn app() -> Element {
/// let country = use_signal(|| WeatherLocation { /// let country = use_signal(|| WeatherLocation {
/// city: "Berlin".to_string(), /// city: "Berlin".to_string(),
/// country: "Germany".to_string(), /// country: "Germany".to_string(),
/// coordinates: (52.5244, 13.4105) /// coordinates: (52.5244, 13.4105),
/// }); /// });
/// ///
/// // Because the resource's future subscribes to `country` by reading it (`country.read()`),
/// // every time `country` changes the resource's future will run again and thus provide a new value.
/// let current_weather = use_resource(move || async move { get_weather(&country()).await });
/// ///
/// // Because the resource's future subscribes to `country` by reading it (`country.read()`), /// rsx! {
/// // every time `country` changes the resource's future will run again and thus provide a new value. /// // the value of the resource can be polled to
/// let current_weather = use_resource(move || async move { get_weather(&country()).await }); /// // conditionally render elements based off if it's future
/// /// // finished (Some(Ok(_)), errored Some(Err(_)),
/// rsx! { /// // or is still running (None)
/// // the value of the resource can be polled to /// match &*current_weather.read() {
/// // conditionally render elements based off if it's future /// Some(Ok(weather)) => rsx! { WeatherElement { weather } },
/// // finished (Some(Ok(_)), errored Some(Err(_)), /// Some(Err(e)) => rsx! { p { "Loading weather failed, {e}" } },
/// // or is still running (None) /// None => rsx! { p { "Loading..." } }
/// match current_weather.value() { /// }
/// Some(Ok(weather)) => rsx! { WeatherElement { weather } }, /// }
/// Some(Err(e)) => rsx! { p { "Loading weather failed, {e}" } }, /// }
/// None => rsx! { p { "Loading..." } }
/// }
/// }
///}
/// ``` /// ```
/// ///
/// ## With non-reactive dependencies /// ## With non-reactive dependencies