wasm_react/hooks/
use_context.rs

1use std::{rc::Rc, thread::LocalKey};
2use wasm_bindgen::UnwrapThrowExt;
3
4use crate::{react_bindings, Context};
5
6/// Allows access to the current context value of the given context.
7///
8/// See [`create_context()`](crate::create_context()) for usage.
9pub fn use_context<T>(context: &'static LocalKey<Context<T>>) -> Rc<T> {
10  let mut result = None;
11
12  context.with(|context| {
13    react_bindings::use_rust_context(
14      context.as_ref(),
15      &mut |ref_container_value| {
16        result = Some(
17          ref_container_value
18            .value::<T>()
19            .expect_throw("mismatched context type"),
20        );
21      },
22    );
23  });
24
25  result.expect_throw("callback was not called")
26}