fix: nightly Callback conversion problem (#30)

This commit is contained in:
luoxiaozero 2023-11-30 22:35:19 +08:00 committed by GitHub
parent 985d31bf7d
commit 601b4d5ccd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 16 deletions

View file

@ -73,23 +73,23 @@ pub fn Binder<El: ElementDescriptor + Clone + 'static>(
scrollable_element_handle_vec.set_value(handle_vec); scrollable_element_handle_vec.set_value(handle_vec);
}; };
let add_scroll_listener = move |listener: Callback<()>| { let add_scroll_listener = Callback::new(move |listener: Callback<()>| {
scroll_listener.update_value(|scroll_listener| { scroll_listener.update_value(|scroll_listener| {
if scroll_listener.is_none() { if scroll_listener.is_none() {
ensure_scroll_listener(); ensure_scroll_listener();
} }
*scroll_listener = Some(listener); *scroll_listener = Some(listener);
}) })
}; });
let remove_scroll_listener = move |_| { let remove_scroll_listener = Callback::new(move |_| {
scrollable_element_handle_vec.update_value(|vec| { scrollable_element_handle_vec.update_value(|vec| {
vec.drain(..).for_each(|handle| handle.remove()); vec.drain(..).for_each(|handle| handle.remove());
}); });
scroll_listener.set_value(None); scroll_listener.set_value(None);
}; });
let add_resize_listener = move |listener: Callback<()>| { let add_resize_listener = Callback::new(move |listener: Callback<()>| {
resize_handle.update_value(move |resize_handle| { resize_handle.update_value(move |resize_handle| {
if let Some(handle) = resize_handle.take() { if let Some(handle) = resize_handle.take() {
handle.remove(); handle.remove();
@ -100,19 +100,19 @@ pub fn Binder<El: ElementDescriptor + Clone + 'static>(
*resize_handle = Some(handle); *resize_handle = Some(handle);
}); });
}; });
let remove_resize_listener = move |_| { let remove_resize_listener = Callback::new(move |_| {
resize_handle.update_value(move |handle| { resize_handle.update_value(move |handle| {
if let Some(handle) = handle.take() { if let Some(handle) = handle.take() {
handle.remove(); handle.remove();
} }
}); });
}; });
on_cleanup(move || { on_cleanup(move || {
remove_scroll_listener(()); remove_scroll_listener.call(());
remove_resize_listener(()); remove_resize_listener.call(());
}); });
view! { view! {
{children()} {children()}

View file

@ -28,19 +28,19 @@ where
}) })
}); });
let allow_value = move |v: String| { let allow_value = Callback::<String, bool>::new(move |v: String| {
let Ok(v) = v.parse::<T>() else { return false }; let Ok(v) = v.parse::<T>() else { return false };
value.set(v); value.set(v);
true true
}; });
let step: StoredMaybeSignal<_> = step.into(); let step: StoredMaybeSignal<_> = step.into();
let add = move |_| { let add = Callback::<ev::MouseEvent>::new(move |_| {
value.set(value.get_untracked() + step.get_untracked()); value.set(value.get_untracked() + step.get_untracked());
}; });
let sub = move |_| { let sub = Callback::<ev::MouseEvent>::new(move |_| {
value.set(value.get_untracked() - step.get_untracked()); value.set(value.get_untracked() - step.get_untracked());
}; });
view! { view! {
<Input value=input_value allow_value placeholder> <Input value=input_value allow_value placeholder>
<InputSuffix slot> <InputSuffix slot>