DioxusLabs / dioxus

Fullstack GUI library for web, desktop, mobile, and more.
https://dioxuslabs.com
Apache License 2.0
19.3k stars 735 forks source link

Order of use effect hooks changed #2262

Closed mgjm closed 2 months ago

mgjm commented 2 months ago

Problem

The initial execution order of use_effect hooks changed from version 0.5.0 to 0.5.1.

Steps To Reproduce

use dioxus::prelude::*;
use gloo::console;

fn main() {
    dioxus::web::launch::launch_cfg(app, Default::default());
}

pub fn app() -> Element {
    use_effect(move || {
        console::log!("effect", 1);
    });
    use_effect(move || {
        console::log!("effect", 2);
    });
    use_effect(move || {
        console::log!("effect", 3);
    });

    rsx! {
        "Hello World"
    }
}

Log output in version 0.5.0

effect 1
effect 2
effect 3

Log output in version 0.5.1

effect 3
effect 2
effect 1

Expected behavior

The execution order of effects should stay consistent between minor versions. Preferable in the invocation order (behaviour of version 0.5.0).

Environment: