Enum dioxus_core::EventPriority [−][src]
pub enum EventPriority {
Immediate,
High,
Medium,
Low,
}
Expand description
Priority of Event Triggers.
Internally, Dioxus will abort work that’s taking too long if new, more important work arrives. Unlike React, Dioxus won’t be afraid to pause work or flush changes to the RealDOM. This is called “cooperative scheduling”. Some Renderers implement this form of scheduling internally, however Dioxus will perform its own scheduling as well.
The ultimate goal of the scheduler is to manage latency of changes, prioritizing “flashier” changes over “subtler” changes.
React has a 5-tier priority system. However, they break things into “Continuous” and “Discrete” priority. For now, we keep it simple, and just use a 3-tier priority system.
- NoPriority = 0
- LowPriority = 1
- NormalPriority = 2
- UserBlocking = 3
- HighPriority = 4
- ImmediatePriority = 5
We still have a concept of discrete vs continuous though - discrete events won’t be batched, but continuous events will. This means that multiple “scroll” events will be processed in a single frame, but multiple “click” events will be flushed before proceeding. Multiple discrete events is highly unlikely, though.
Variants
Immediate
Work that must be completed during the EventHandler phase.
Currently this is reserved for controlled inputs.
High
“High Priority” work will not interrupt other high priority work, but will interrupt medium and low priority work.
This is typically reserved for things like user interaction.
React calls these “discrete” events, but with an extra category of “user-blocking” (Immediate).
Medium
“Medium priority” work is generated by page events not triggered by the user. These types of events are less important than “High Priority” events and will take precedence over low priority events.
This is typically reserved for VirtualEvents that are not related to keyboard or mouse input.
React calls these “continuous” events (e.g. mouse move, mouse wheel, touch move, etc).
Low
“Low Priority” work will always be preempted unless the work is significantly delayed, in which case it will be advanced to the front of the work queue until completed.
The primary user of Low Priority work is the asynchronous work system (Suspense).
This is considered “idle” work or “background” work.
Trait Implementations
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Auto Trait Implementations
impl RefUnwindSafe for EventPriority
impl Send for EventPriority
impl Sync for EventPriority
impl Unpin for EventPriority
impl UnwindSafe for EventPriority
Blanket Implementations
Mutably borrows from an owned value. Read more
Compare self to key
and return true
if they are equal.