mirror of
https://github.com/adoyle0/leptos-use.git
synced 2025-03-13 01:09:48 -04:00
fixed use_event_listener removing of listener with non default options
This commit is contained in:
parent
413a6f933e
commit
fa47bab2cd
3 changed files with 162 additions and 158 deletions
|
@ -28,6 +28,7 @@ wasm-bindgen-futures = "0.4"
|
|||
[dependencies.web-sys]
|
||||
version = "0.3"
|
||||
features = [
|
||||
"AddEventListenerOptions",
|
||||
"BinaryType",
|
||||
"CssStyleDeclaration",
|
||||
"CloseEvent",
|
||||
|
@ -38,6 +39,9 @@ features = [
|
|||
"DataTransfer",
|
||||
"DragEvent",
|
||||
"Element",
|
||||
"EventListener",
|
||||
"EventListenerOptions",
|
||||
"EventTarget",
|
||||
"File",
|
||||
"FileList",
|
||||
"HtmlElement",
|
||||
|
|
|
@ -112,11 +112,13 @@ where
|
|||
|
||||
let cleanup_fn = {
|
||||
let closure_js = closure_js.clone();
|
||||
let options = options.clone();
|
||||
|
||||
move |element: &web_sys::EventTarget| {
|
||||
let _ = element.remove_event_listener_with_callback(
|
||||
let _ = element.remove_event_listener_with_callback_and_event_listener_options(
|
||||
&event_name,
|
||||
closure_js.as_ref().unchecked_ref(),
|
||||
options.unchecked_ref(),
|
||||
);
|
||||
}
|
||||
};
|
||||
|
@ -125,8 +127,7 @@ where
|
|||
|
||||
let signal = (target).into();
|
||||
|
||||
let prev_element: Rc<RefCell<Option<web_sys::EventTarget>>> =
|
||||
Rc::new(RefCell::new(signal.get_untracked().map(|e| e.into())));
|
||||
let prev_element = Rc::new(RefCell::new(None::<web_sys::EventTarget>));
|
||||
|
||||
let cleanup_prev_element = {
|
||||
let prev_element = prev_element.clone();
|
||||
|
|
|
@ -25,6 +25,7 @@ use crate::utils::CloneableFnWithArg;
|
|||
/// ```
|
||||
/// # use leptos::*;
|
||||
/// # use leptos_use::{use_websocket, UseWebsocketReturn};
|
||||
/// # use leptos_use::core::ConnectionReadyState;
|
||||
/// #
|
||||
/// # #[component]
|
||||
/// # fn Demo() -> impl IntoView {
|
||||
|
@ -37,16 +38,14 @@ use crate::utils::CloneableFnWithArg;
|
|||
/// open,
|
||||
/// close,
|
||||
/// ..
|
||||
/// } = use_websocket("wss://echo.websocket.events/".to_string());
|
||||
/// } = use_websocket("wss://echo.websocket.events/");
|
||||
///
|
||||
/// let send_message = move |_| {
|
||||
/// let m = "Hello, world!".to_string();
|
||||
/// send(m.clone());
|
||||
/// send("Hello, world!".to_string());
|
||||
/// };
|
||||
///
|
||||
/// let send_byte_message = move |_| {
|
||||
/// let m = b"Hello, world!\r\n".to_vec();
|
||||
/// send_bytes(m.clone());
|
||||
/// send_bytes(b"Hello, world!\r\n".to_vec());
|
||||
/// };
|
||||
///
|
||||
/// let status = move || ready_state.get().to_string();
|
||||
|
@ -118,7 +117,7 @@ pub fn use_websocket_with_options(
|
|||
|
||||
let connect_ref: StoredValue<Option<Rc<dyn Fn()>>> = store_value(None);
|
||||
|
||||
// cfg_if! { if #[cfg(not(feature = "ssr"))] {
|
||||
cfg_if! { if #[cfg(not(feature = "ssr"))] {
|
||||
let on_open_ref = store_value(options.on_open);
|
||||
let on_message_ref = store_value(options.on_message);
|
||||
let on_message_bytes_ref = store_value(options.on_message_bytes);
|
||||
|
@ -278,7 +277,7 @@ pub fn use_websocket_with_options(
|
|||
ws_ref.set_value(Some(web_socket));
|
||||
}))
|
||||
});
|
||||
// }}
|
||||
}}
|
||||
|
||||
// Send text (String)
|
||||
let send = {
|
||||
|
|
Loading…
Add table
Reference in a new issue