pub struct FullstackState { /* private fields */ }Expand description
State used by FullstackState::render_handler to render a dioxus component with axum
Implementations§
Source§impl FullstackState
impl FullstackState
Sourcepub fn headless() -> Self
pub fn headless() -> Self
Create a headless FullstackState without a root component.
This won’t render pages, but can still be used to register server functions and serve static assets.
Sourcepub fn new<M: 'static>(
config: ServeConfig,
root: impl ComponentFunction<(), M> + Send + Sync + 'static,
) -> Self
pub fn new<M: 'static>( config: ServeConfig, root: impl ComponentFunction<(), M> + Send + Sync + 'static, ) -> Self
Create a new FullstackState
Sourcepub fn new_with_virtual_dom_factory(
config: ServeConfig,
build_virtual_dom: impl Fn() -> VirtualDom + Send + Sync + 'static,
) -> Self
pub fn new_with_virtual_dom_factory( config: ServeConfig, build_virtual_dom: impl Fn() -> VirtualDom + Send + Sync + 'static, ) -> Self
Create a new FullstackState with a custom VirtualDom factory. This method can be
used to pass context into the root component of your application.
Sourcepub fn with_config(self, config: ServeConfig) -> Self
pub fn with_config(self, config: ServeConfig) -> Self
Set the ServeConfig for this FullstackState
Sourcepub async fn render_handler(
__arg0: State<Self>,
request: Request<Body>,
) -> Response
pub async fn render_handler( __arg0: State<Self>, request: Request<Body>, ) -> Response
SSR renderer handler for Axum with added context injection.
§Example
#![allow(non_snake_case)]
use std::sync::{Arc, Mutex};
use axum::routing::get;
use dioxus::prelude::*;
use dioxus_server::{FullstackState, render_handler, ServeConfig};
fn app() -> Element {
rsx! {
"hello!"
}
}
#[tokio::main]
async fn main() {
let addr = dioxus::cli_config::fullstack_address_or_localhost();
let router = axum::Router::new()
// Register server functions, etc.
// Note you can use `register_server_functions_with_context`
// to inject the context into server functions running outside
// of an SSR render context.
.fallback(get(render_handler))
.with_state(FullstackState::new(ServeConfig::new(), app))
.into_make_service();
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
axum::serve(listener, router).await.unwrap();
}Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for FullstackState
impl !UnwindSafe for FullstackState
impl Freeze for FullstackState
impl Send for FullstackState
impl Sync for FullstackState
impl Unpin for FullstackState
impl UnsafeUnpin for FullstackState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> InitializeFromFunction<T> for T
impl<T> InitializeFromFunction<T> for T
Source§fn initialize_from_function(f: fn() -> T) -> T
fn initialize_from_function(f: fn() -> T) -> T
Create an instance of this type from an initialization function
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<Ret> SpawnIfAsync<(), Ret> for Ret
impl<Ret> SpawnIfAsync<(), Ret> for Ret
Source§impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
Source§fn super_from(input: T) -> O
fn super_from(input: T) -> O
Convert from a type to another type.
Source§impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
Source§fn super_into(self) -> O
fn super_into(self) -> O
Convert from a type to another type.