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);
};
let add_scroll_listener = move |listener: Callback<()>| {
let add_scroll_listener = Callback::new(move |listener: Callback<()>| {
scroll_listener.update_value(|scroll_listener| {
if scroll_listener.is_none() {
ensure_scroll_listener();
}
*scroll_listener = Some(listener);
})
};
});
let remove_scroll_listener = move |_| {
let remove_scroll_listener = Callback::new(move |_| {
scrollable_element_handle_vec.update_value(|vec| {
vec.drain(..).for_each(|handle| handle.remove());
});
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| {
if let Some(handle) = resize_handle.take() {
handle.remove();
@ -100,19 +100,19 @@ pub fn Binder<El: ElementDescriptor + Clone + 'static>(
*resize_handle = Some(handle);
});
};
});
let remove_resize_listener = move |_| {
let remove_resize_listener = Callback::new(move |_| {
resize_handle.update_value(move |handle| {
if let Some(handle) = handle.take() {
handle.remove();
}
});
};
});
on_cleanup(move || {
remove_scroll_listener(());
remove_resize_listener(());
remove_scroll_listener.call(());
remove_resize_listener.call(());
});
view! {
{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 };
value.set(v);
true
};
});
let step: StoredMaybeSignal<_> = step.into();
let add = move |_| {
let add = Callback::<ev::MouseEvent>::new(move |_| {
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());
};
});
view! {
<Input value=input_value allow_value placeholder>
<InputSuffix slot>