fix: use_route should subscribe to changes to the route
This commit is contained in:
1 parent
ccbb955b7b
commit
a21e7d4dd1
2 files changed
+38
-8
No files matched your search
@@ -1,7 +1,7 @@
|
||||
use gloo::history::{BrowserHistory, History, HistoryListener, Location};
|
||||
use std::{
|
||||
cell::{Cell, Ref, RefCell},
|
||||
collections::HashMap,
|
||||
collections::{HashMap, HashSet},
|
||||
rc::Rc,
|
||||
};
|
||||
|
||||
@@ -12,6 +12,7 @@ pub struct RouterService {
|
||||
pub(crate) pending_events: Rc<RefCell<Vec<RouteEvent>>>,
|
||||
history: Rc<RefCell<BrowserHistory>>,
|
||||
slots: Rc<RefCell<Vec<(ScopeId, String)>>>,
|
||||
onchange_listeners: Rc<RefCell<HashSet<ScopeId>>>,
|
||||
root_found: Rc<Cell<Option<ScopeId>>>,
|
||||
cur_path_params: Rc<RefCell<HashMap<String, String>>>,
|
||||
listener: HistoryListener,
|
||||
@@ -73,6 +74,7 @@ impl RouterService {
|
||||
regen_route,
|
||||
slots,
|
||||
pending_events,
|
||||
onchange_listeners: Rc::new(RefCell::new(HashSet::new())),
|
||||
cur_path_params: Rc::new(RefCell::new(HashMap::new())),
|
||||
}
|
||||
}
|
||||
@@ -143,6 +145,16 @@ impl RouterService {
|
||||
pub fn current_path_params(&self) -> Ref<HashMap<String, String>> {
|
||||
self.cur_path_params.borrow()
|
||||
}
|
||||
|
||||
pub fn subscribe_onchange(&self, id: ScopeId) {
|
||||
log::trace!("Subscribing onchange for scope id {:?}", id);
|
||||
self.onchange_listeners.borrow_mut().insert(id);
|
||||
}
|
||||
|
||||
pub fn unsubscribe_onchange(&self, id: ScopeId) {
|
||||
log::trace!("Subscribing onchange for scope id {:?}", id);
|
||||
self.onchange_listeners.borrow_mut().remove(&id);
|
||||
}
|
||||
}
|
||||
|
||||
fn clean_route(route: String) -> String {
|
||||
|
||||
Reference in new issue
Block a user