dioxus/examples/README.md

178 lines
4.7 KiB
Markdown
Raw Normal View History

# Examples
These examples are fully-fledged mini Dioxus apps.
2021-12-01 03:48:05 +00:00
You can run them with `cargo run --example EXAMPLE_NAME`. Example:
2021-12-01 03:48:05 +00:00
```shell
cargo run --example hello_world
2021-12-01 03:48:05 +00:00
```
(Most of these examples are run through webview, so you don't need the Dioxus CLI installed)
2021-12-01 03:48:05 +00:00
## Basic Features
2021-12-01 03:48:05 +00:00
[hello_world](./hello_world.rs) - Most basic example
2021-12-01 03:48:05 +00:00
[readme](./readme.rs) - Counter example from the Readme
2021-12-01 03:48:05 +00:00
[custom_assets](./custom_assets.rs) - Include images
2021-12-01 03:48:05 +00:00
[custom_element](./custom_element.rs) - Render webcomponents
2021-12-01 03:48:05 +00:00
[custom_html](./custom_html.rs) - Customize wrapper HTML
2021-12-01 03:48:05 +00:00
[eval](./eval.rs) - Evaluate JS expressions
2021-12-01 03:48:05 +00:00
### RSX
[rsx_usage](./rsx_usage.rs) - Demo of all RSX features
[xss_safety](./xss_safety.rs) - You can include text without worrying about injections by default
### Props
[borrowed](./borrowed.rs) - Borrowed props
[inlineprops](./inlineprops.rs) - Demo of `inline_props` macro
[optional_props](./optional_props.rs) - Optional props
### CSS
[all_css](./all_css.rs) - You can specify any CSS attribute
[tailwind](./tailwind.rs) - You can use a library for styling
## Input Handling
[all_events](./all_events.rs) - Basic event handling demo
[filedragdrop](./filedragdrop.rs) - Handle dropped files
[form](./form.rs) - Handle form submission
[inputs](./inputs.rs) - Input values
[nested_listeners](./nested_listeners.rs) - Nested handlers and bubbling
[textarea](textarea.rs) - Text area input
### State Management
[fermi](./fermi.rs) - Fermi library for state management
[pattern_reducer](./pattern_reducer.rs) - The reducer pattern with `use_state`
[rsx_compile_fail](./rsx_compile_fail.rs)
### Async
[login_form](./login_form.rs) - Login endpoint example
[suspense](./suspense.rs) - Render placeholders while data is loading
[tasks](./tasks.rs) - Continuously run future
### SVG
[svg_basic](./svg_basic.rs)
[svg](./svg.rs)
### Performance
[framework_benchmark](./framework_benchmark.rs) - Renders a huge list
> Note: The benchmark should be run in release mode:
>
>```shell
> cargo run --example framework_benchmark --release
>```
[heavy_compute](./heavy_compute.rs) - How to deal with expensive operations
## Server-side rendering
[ssr](./ssr.rs) - Rendering RSX server-side
[hydration](./hydration.rs) - Pre-rendering with hydration
## Common Patterns
[disabled](./disabled.rs) - Disable buttons conditionally
[error_handle](./error_handle.rs) - Handle errors with early return
## Routing
[flat_router](./flat_router.rs) - Basic, flat route example
[router](./router.rs) - Router example
[link](./link.rs) - Internal, external and custom links
## Platform Features
[window_event](./window_event.rs) - Window decorations, fullscreen, minimization, etc.
[window_zoom](./window_zoom.rs) Zoom in or out
## Example Apps
[calculator](./calculator.rs) - Simple calculator
[pattern_model](./pattern_model.rs) - Simple calculator, but using a custom struct as the model
[crm](./crm.rs) - Toy multi-page customer management app
[dog_app](./dog_app.rs) - Accesses dog API
[file_explorer](./file_explorer.rs) - File browser that uses `use_ref` to interact with the model
[todomvc](./todomvc.rs) - Todo task list example
## Terminal UI
2022-10-29 01:06:39 +00:00
[tui_all_events](../packages/tui/examples/tui_all_events.rs) - All of the terminal events
2022-10-29 01:06:39 +00:00
[tui_border](../packages/tui/examples/tui_border.rs) - Different styles of borders and corners
2022-10-29 01:06:39 +00:00
[tui_buttons](../packages/tui/examples/tui_buttons.rs) - A grid of buttons that work demonstrate the focus system
2022-10-29 01:06:39 +00:00
[tui_color_test](../packages/tui/examples/tui_color_test.rs) - Grid of colors to demonstrate compatablility with different terminal color rendering modes
2022-10-29 01:06:39 +00:00
[tui_colorpicker](../packages/tui/examples/tui_colorpicker.rs) - A colorpicker
2022-10-29 01:06:39 +00:00
[tui_components](../packages/tui/examples/tui_components.rs) - Simple component example
2022-10-29 01:06:39 +00:00
[tui_flex](../packages/tui/examples/tui_flex.rs) - Flexbox support
2022-10-29 01:06:39 +00:00
[tui_hover](../packages/tui/examples/tui_hover.rs) - Detect hover and mouse events
2022-10-29 01:06:39 +00:00
[tui_list](../packages/tui/examples/tui_list.rs) - Renders a list of items
2022-10-29 01:06:39 +00:00
[tui_margin](../packages/tui/examples/tui_margin.rs) - Margins around flexboxes
2022-10-29 01:06:39 +00:00
[tui_quadrants](../packages/tui/examples/tui_quadrants.rs) - Four quadrants
2022-10-29 01:06:39 +00:00
[tui_readme](../packages/tui/examples/tui_readme.rs) - The readme example
2022-10-29 01:06:39 +00:00
[tui_task](../packages/tui/examples/tui_task.rs) - Background tasks
[tui_text](../packages/tui/examples/tui_text.rs) - Simple text example
# TODO
Missing Features
- Fine-grained reactivity
- Refs - imperative handles to elements
- Function-driven children: Pass functions to make VNodes
Missing examples
- Shared state
- Root-less element groups
- Spread props
- Custom elements
- Component Children: Pass children into child components
- Render To string: Render a mounted virtualdom to a string
- Testing and Debugging