Merge pull request #156 from DioxusLabs/jk/web-launch-cfg

Correct dioxus web docs to include the third paramter
This commit is contained in:
Jonathan Kelley 2022-01-24 20:31:11 -05:00 committed by GitHub
commit 6c5987424e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 9 deletions

View file

@ -149,7 +149,7 @@ pub fn launch_with_props<P: 'static + Send>(
props: P, props: P,
builder: impl FnOnce(&mut DesktopConfig) -> &mut DesktopConfig, builder: impl FnOnce(&mut DesktopConfig) -> &mut DesktopConfig,
) { ) {
let mut cfg = DesktopConfig::new(); let mut cfg = DesktopConfig::default();
builder(&mut cfg); builder(&mut cfg);
let event_loop = EventLoop::with_user_event(); let event_loop = EventLoop::with_user_event();

View file

@ -30,7 +30,7 @@ impl WebConfig {
/// work and suspended nodes. /// work and suspended nodes.
/// ///
/// Dioxus will load up all the elements with the `dio_el` data attribute into memory when the page is loaded. /// Dioxus will load up all the elements with the `dio_el` data attribute into memory when the page is loaded.
pub fn hydrate(mut self, f: bool) -> Self { pub fn hydrate(&mut self, f: bool) -> &mut Self {
self.hydrate = f; self.hydrate = f;
self self
} }
@ -38,7 +38,7 @@ impl WebConfig {
/// Set the name of the element that Dioxus will use as the root. /// Set the name of the element that Dioxus will use as the root.
/// ///
/// This is akint to calling React.render() on the element with the specified name. /// This is akint to calling React.render() on the element with the specified name.
pub fn rootname(mut self, name: impl Into<String>) -> Self { pub fn rootname(&mut self, name: impl Into<String>) -> &mut Self {
self.rootname = name.into(); self.rootname = name.into();
self self
} }
@ -46,7 +46,7 @@ impl WebConfig {
/// Set the name of the element that Dioxus will use as the root. /// Set the name of the element that Dioxus will use as the root.
/// ///
/// This is akint to calling React.render() on the element with the specified name. /// This is akint to calling React.render() on the element with the specified name.
pub fn with_string_cache(mut self, cache: Vec<String>) -> Self { pub fn with_string_cache(&mut self, cache: Vec<String>) -> &mut Self {
self.cached_strings = cache; self.cached_strings = cache;
self self
} }

View file

@ -92,6 +92,29 @@ pub fn launch(root_component: Component) {
launch_with_props(root_component, (), |c| c); launch_with_props(root_component, (), |c| c);
} }
/// Launch your app and run the event loop, with configuration.
///
/// This function will start your web app on the main web thread.
///
/// You can configure the WebView window with a configuration closure
///
/// ```rust
/// use dioxus::prelude::*;
///
/// fn main() {
/// dioxus_web::launch_with_props(App, |config| config.pre_render(true));
/// }
///
/// fn app(cx: Scope) -> Element {
/// cx.render(rsx!{
/// h1 {"hello world!"}
/// })
/// }
/// ```
pub fn launch_cfg(root: Component, config_builder: impl FnOnce(&mut WebConfig) -> &mut WebConfig) {
launch_with_props(root, (), config_builder)
}
/// Launches the VirtualDOM from the specified component function and props. /// Launches the VirtualDOM from the specified component function and props.
/// ///
/// This method will block the thread with `spawn_local` /// This method will block the thread with `spawn_local`
@ -100,7 +123,11 @@ pub fn launch(root_component: Component) {
/// ///
/// ```rust, ignore /// ```rust, ignore
/// fn main() { /// fn main() {
/// dioxus_web::launch_with_props(App, RootProps { name: String::from("joe") }); /// dioxus_web::launch_with_props(
/// App,
/// RootProps { name: String::from("joe") },
/// |config| config
/// );
/// } /// }
/// ///
/// #[derive(ParitalEq, Props)] /// #[derive(ParitalEq, Props)]
@ -112,19 +139,19 @@ pub fn launch(root_component: Component) {
/// rsx!(cx, div {"hello {cx.props.name}"}) /// rsx!(cx, div {"hello {cx.props.name}"})
/// } /// }
/// ``` /// ```
pub fn launch_with_props<T, F>( pub fn launch_with_props<T>(
root_component: Component<T>, root_component: Component<T>,
root_properties: T, root_properties: T,
configuration_builder: F, configuration_builder: impl FnOnce(&mut WebConfig) -> &mut WebConfig,
) where ) where
T: Send + 'static, T: Send + 'static,
F: FnOnce(WebConfig) -> WebConfig,
{ {
if cfg!(feature = "panic_hook") { if cfg!(feature = "panic_hook") {
console_error_panic_hook::set_once(); console_error_panic_hook::set_once();
} }
let config = configuration_builder(WebConfig::default()); let mut config = WebConfig::default();
configuration_builder(&mut config);
wasm_bindgen_futures::spawn_local(run_with_props(root_component, root_properties, config)); wasm_bindgen_futures::spawn_local(run_with_props(root_component, root_properties, config));
} }