Merge branch 'master' of https://github.com/DioxusLabs/dioxus into rusty-events
Conflicts: packages/html/src/events.rs packages/tui/src/hooks.rs
This commit is contained in:
commit
f3fcec2bdf
87 files changed
+6230
-868
No files matched your search
@@ -71,7 +71,7 @@ Desktop APIs will likely be in flux as we figure out better patterns than our El
|
||||
[Jump to the getting started guide for Desktop.](/reference/platforms/desktop)
|
||||
|
||||
Examples:
|
||||
- [File explorer](https://github.com/dioxusLabs/file-explorer/)
|
||||
- [File explorer](https://github.com/DioxusLabs/example-projects/blob/master/file-explorer)
|
||||
- [WiFi scanner](https://github.com/DioxusLabs/example-projects/blob/master/wifi-scanner)
|
||||
|
||||
[](https://github.com/DioxusLabs/example-projects/tree/master/file-explorer)
|
||||
|
||||
@@ -64,7 +64,7 @@ The most common hook you'll use for storing state is `use_state`. `use_state` pr
|
||||
|
||||
```rust
|
||||
fn App(cx: Scope)-> Element {
|
||||
let (post, set_post) = use_state(&cx, || {
|
||||
let post = use_state(&cx, || {
|
||||
PostData {
|
||||
id: Uuid::new_v4(),
|
||||
score: 10,
|
||||
@@ -112,11 +112,11 @@ For example, let's say we provide a button to generate a new post. Whenever the
|
||||
|
||||
```rust
|
||||
fn App(cx: Scope)-> Element {
|
||||
let (post, set_post) = use_state(&cx, || PostData::new());
|
||||
let post = use_state(&cx, || PostData::new());
|
||||
|
||||
cx.render(rsx!{
|
||||
button {
|
||||
onclick: move |_| set_post(PostData::random())
|
||||
onclick: move |_| post.set(PostData::random())
|
||||
"Generate a random post"
|
||||
}
|
||||
Post { props: &post }
|
||||
@@ -141,19 +141,19 @@ We can use tasks in our components to build a tiny stopwatch that ticks every se
|
||||
|
||||
```rust
|
||||
fn App(cx: Scope)-> Element {
|
||||
let (elapsed, set_elapsed) = use_state(&cx, || 0);
|
||||
|
||||
use_future(&cx, || {
|
||||
to_owned![set_elapsed]; // explicitly capture this hook for use in async
|
||||
let elapsed = use_state(&cx, || 0);
|
||||
|
||||
use_future(&cx, (), |()| {
|
||||
to_owned![elapsed]; // explicitly capture this hook for use in async
|
||||
async move {
|
||||
loop {
|
||||
TimeoutFuture::from_ms(1000).await;
|
||||
set_elapsed.modify(|i| i + 1)
|
||||
gloo_timers::future::TimeoutFuture::new(1_000).await;
|
||||
elapsed.modify(|i| i + 1)
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
rsx!(cx, div { "Current stopwatch time: {sec_elapsed}" })
|
||||
rsx!(cx, div { "Current stopwatch time: {elapsed}" })
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ When using Debian/bullseye `libappindicator3-dev` is no longer available but rep
|
||||
sudo apt install libwebkit2gtk-4.0-dev libgtk-3-dev libayatana-appindicator3-dev
|
||||
```
|
||||
|
||||
If you run into issues, make sure you have all the basics installed, as outlined in the [Tauri docs](https://tauri.studio/en/docs/get-started/setup-linux).
|
||||
If you run into issues, make sure you have all the basics installed, as outlined in the [Tauri docs](https://tauri.studio/v1/guides/getting-started/prerequisites#setting-up-linux).
|
||||
|
||||
|
||||
### macOS
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
- [Custom Renderer](guide/custom_renderer.md)
|
||||
- [Server-side components](guide/server_side_components.md)
|
||||
- [Bundling and Distributing](guide/bundline.md)
|
||||
- [Hot Reloading Rsx](guide/hot_reloading.md)
|
||||
|
||||
- [Reference Guide](reference/reference.md)
|
||||
- [Anti-patterns](reference/anti.md)
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# Hot Reloading
|
||||
1. Hot reloading allows much faster iteration times inside of rsx calls by interperting them and streaming the edits.
|
||||
2. It is useful when changing the styling/layout of a program, but will not help with changing the logic of a program.
|
||||
3. Currently the cli only implements hot reloading for the web renderer.
|
||||
|
||||
# Setup
|
||||
Install [dioxus-cli](https://github.com/DioxusLabs/cli).
|
||||
Enable the hot-reload feature on dioxus:
|
||||
```toml
|
||||
dioxus = { version = "*", features = ["web", "hot-reload"] }
|
||||
```
|
||||
|
||||
# Usage
|
||||
1. run:
|
||||
```
|
||||
dioxus serve --hot-reload
|
||||
```
|
||||
2. change some code within a rsx macro
|
||||
3. open your localhost in a browser
|
||||
4. save and watch the style change without recompiling
|
||||
|
||||
# Limitations
|
||||
1. The interperter can only use expressions that existed on the last full recompile. If you introduce a new variable or expression to the rsx call, it will trigger a full recompile to capture the expression.
|
||||
2. Components and Iterators can contain abritary rust code, and will trigger a full recompile when changed.
|
||||
@@ -11,7 +11,7 @@ Getting Set up with Dioxus-Desktop is quite easy. Make sure you have Rust and Ca
|
||||
|
||||
```shell
|
||||
$ cargo new --bin demo
|
||||
$ cd app
|
||||
$ cd demo
|
||||
```
|
||||
|
||||
Add Dioxus with the `desktop` feature:
|
||||
|
||||
Reference in new issue
Block a user