From 9eee1da3e9a46e69a7b07e6064eb163e06261bfb Mon Sep 17 00:00:00 2001 From: Kaede Hoshikawa Date: Tue, 19 Jul 2022 21:07:44 +0900 Subject: [PATCH] Users always have to manually construct dependency into Rc. --- .../hooks/use_prepared_state/feat_hydration.rs | 4 ++-- .../hooks/use_prepared_state/feat_hydration_ssr.rs | 8 ++++---- .../hooks/use_prepared_state/feat_none.rs | 4 ++-- .../hooks/use_prepared_state/feat_ssr.rs | 14 ++++++-------- .../use_transitive_state/feat_hydration_ssr.rs | 4 ++-- .../hooks/use_transitive_state/feat_ssr.rs | 8 ++++---- packages/yew/tests/use_prepared_state.rs | 5 +++-- packages/yew/tests/use_transitive_state.rs | 2 +- 8 files changed, 24 insertions(+), 25 deletions(-) diff --git a/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration.rs b/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration.rs index c6e6fde3ccf..6d122ea7068 100644 --- a/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration.rs +++ b/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration.rs @@ -40,7 +40,7 @@ async fn decode_base64(_s: &str) -> Result, JsValue> { } #[doc(hidden)] -pub fn use_prepared_state(deps: D) -> impl Hook>>> +pub fn use_prepared_state(deps: Rc) -> impl Hook>>> where D: Serialize + DeserializeOwned + PartialEq + 'static, T: Serialize + DeserializeOwned + 'static, @@ -51,7 +51,7 @@ where T: Serialize + DeserializeOwned + 'static, { _marker: PhantomData, - deps: D, + deps: Rc, } impl Hook for HookProvider diff --git a/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration_ssr.rs b/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration_ssr.rs index 2ab10ac7e19..e11e4eda2cd 100644 --- a/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration_ssr.rs +++ b/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration_ssr.rs @@ -14,7 +14,7 @@ use crate::suspense::SuspensionResult; #[doc(hidden)] pub fn use_prepared_state( f: F, - deps: D, + deps: Rc, ) -> impl Hook>>> where D: Serialize + DeserializeOwned + PartialEq + 'static, @@ -27,7 +27,7 @@ where T: Serialize + DeserializeOwned + 'static, F: FnOnce(Rc) -> T, { - deps: D, + deps: Rc, f: F, } @@ -53,7 +53,7 @@ where #[doc(hidden)] pub fn use_prepared_state_with_suspension( f: F, - deps: D, + deps: Rc, ) -> impl Hook>>> where D: Serialize + DeserializeOwned + PartialEq + 'static, @@ -68,7 +68,7 @@ where F: FnOnce(Rc) -> U, U: 'static + Future, { - deps: D, + deps: Rc, f: F, } diff --git a/packages/yew/src/functional/hooks/use_prepared_state/feat_none.rs b/packages/yew/src/functional/hooks/use_prepared_state/feat_none.rs index b1fb795e458..afff4ff0f9b 100644 --- a/packages/yew/src/functional/hooks/use_prepared_state/feat_none.rs +++ b/packages/yew/src/functional/hooks/use_prepared_state/feat_none.rs @@ -10,7 +10,7 @@ use crate::suspense::SuspensionResult; #[doc(hidden)] #[hook] -pub fn use_prepared_state(_deps: D) -> SuspensionResult>> +pub fn use_prepared_state(_deps: Rc) -> SuspensionResult>> where D: Serialize + DeserializeOwned + PartialEq + 'static, T: Serialize + DeserializeOwned + 'static, @@ -20,7 +20,7 @@ where #[doc(hidden)] #[hook] -pub fn use_prepared_state_with_suspension(_deps: D) -> SuspensionResult>> +pub fn use_prepared_state_with_suspension(_deps: Rc) -> SuspensionResult>> where D: Serialize + DeserializeOwned + PartialEq + 'static, T: Serialize + DeserializeOwned + 'static, diff --git a/packages/yew/src/functional/hooks/use_prepared_state/feat_ssr.rs b/packages/yew/src/functional/hooks/use_prepared_state/feat_ssr.rs index 4297cea931d..2599a0ced58 100644 --- a/packages/yew/src/functional/hooks/use_prepared_state/feat_ssr.rs +++ b/packages/yew/src/functional/hooks/use_prepared_state/feat_ssr.rs @@ -15,7 +15,7 @@ use crate::suspense::{Suspension, SuspensionResult}; #[doc(hidden)] pub fn use_prepared_state( f: F, - deps: D, + deps: Rc, ) -> impl Hook>>> where D: Serialize + DeserializeOwned + PartialEq + 'static, @@ -28,7 +28,7 @@ where T: Serialize + DeserializeOwned + 'static, F: FnOnce(Rc) -> T, { - deps: D, + deps: Rc, f: F, } @@ -41,8 +41,7 @@ where type Output = SuspensionResult>>; fn run(self, ctx: &mut HookContext) -> Self::Output { - let f = self.f; - let deps = Rc::new(self.deps); + let Self { f, deps } = self; let state = { let deps = deps.clone(); @@ -70,7 +69,7 @@ where #[doc(hidden)] pub fn use_prepared_state_with_suspension( f: F, - deps: D, + deps: Rc, ) -> impl Hook>>> where D: Serialize + DeserializeOwned + PartialEq + 'static, @@ -85,7 +84,7 @@ where F: FnOnce(Rc) -> U, U: 'static + Future, { - deps: D, + deps: Rc, f: F, } @@ -99,8 +98,7 @@ where type Output = SuspensionResult>>; fn run(self, ctx: &mut HookContext) -> Self::Output { - let f = self.f; - let deps = Rc::new(self.deps); + let Self { f, deps } = self; let result = use_state(|| { let (s, handle) = Suspension::new(); diff --git a/packages/yew/src/functional/hooks/use_transitive_state/feat_hydration_ssr.rs b/packages/yew/src/functional/hooks/use_transitive_state/feat_hydration_ssr.rs index 56d8c0a302f..d82c4de2ee3 100644 --- a/packages/yew/src/functional/hooks/use_transitive_state/feat_hydration_ssr.rs +++ b/packages/yew/src/functional/hooks/use_transitive_state/feat_hydration_ssr.rs @@ -13,7 +13,7 @@ use crate::suspense::SuspensionResult; #[doc(hidden)] pub fn use_transitive_state( f: F, - deps: D, + deps: Rc, ) -> impl Hook>>> where D: Serialize + DeserializeOwned + PartialEq + 'static, @@ -26,7 +26,7 @@ where T: Serialize + DeserializeOwned + 'static, F: 'static + FnOnce(Rc) -> T, { - deps: D, + deps: Rc, f: F, } diff --git a/packages/yew/src/functional/hooks/use_transitive_state/feat_ssr.rs b/packages/yew/src/functional/hooks/use_transitive_state/feat_ssr.rs index fc0304a2090..cfcea726341 100644 --- a/packages/yew/src/functional/hooks/use_transitive_state/feat_ssr.rs +++ b/packages/yew/src/functional/hooks/use_transitive_state/feat_ssr.rs @@ -40,7 +40,7 @@ where #[doc(hidden)] pub fn use_transitive_state( f: F, - deps: D, + deps: Rc, ) -> impl Hook>>> where D: Serialize + DeserializeOwned + PartialEq + 'static, @@ -53,7 +53,7 @@ where T: Serialize + DeserializeOwned + 'static, F: 'static + FnOnce(Rc) -> T, { - deps: D, + deps: Rc, f: F, } @@ -66,12 +66,12 @@ where type Output = SuspensionResult>>; fn run(self, ctx: &mut HookContext) -> Self::Output { - let f = self.f; + let Self { f, deps } = self; ctx.next_prepared_state(move |_re_render, _| -> TransitiveStateBase { TransitiveStateBase { state_fn: Some(f).into(), - deps: self.deps.into(), + deps, } }); diff --git a/packages/yew/tests/use_prepared_state.rs b/packages/yew/tests/use_prepared_state.rs index 2263aff4f46..3de26d51bde 100644 --- a/packages/yew/tests/use_prepared_state.rs +++ b/packages/yew/tests/use_prepared_state.rs @@ -18,7 +18,7 @@ wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser); async fn use_prepared_state_works() { #[function_component] fn Comp() -> HtmlResult { - let ctr = use_prepared_state!(|_| -> u32 { 12345 }, ())?.unwrap_or_default(); + let ctr = use_prepared_state!(|_| -> u32 { 12345 }, Rc::new(()))?.unwrap_or_default(); Ok(html! {
@@ -68,7 +68,8 @@ async fn use_prepared_state_works() { async fn use_prepared_state_with_suspension_works() { #[function_component] fn Comp() -> HtmlResult { - let ctr = use_prepared_state!(async move |_| -> u32 { 12345 }, ())?.unwrap_or_default(); + let ctr = + use_prepared_state!(async move |_| -> u32 { 12345 }, Rc::new(()))?.unwrap_or_default(); Ok(html! {
diff --git a/packages/yew/tests/use_transitive_state.rs b/packages/yew/tests/use_transitive_state.rs index 3e180d2187d..04030c9deb6 100644 --- a/packages/yew/tests/use_transitive_state.rs +++ b/packages/yew/tests/use_transitive_state.rs @@ -17,7 +17,7 @@ wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser); async fn use_transitive_state_works() { #[function_component] fn Comp() -> HtmlResult { - let ctr = use_transitive_state!(|_| -> u32 { 12345 }, ())?.unwrap_or_default(); + let ctr = use_transitive_state!(|_| -> u32 { 12345 }, Rc::new(()))?.unwrap_or_default(); Ok(html! {