Here is an overview of the state management system in dioxus. This doesn't cover all the internals, but it should serve as a pretty good reference:
Signal is like a fancy version of RefCell for UIs. Just like RefCell, it checks borrows at runtime. It has a bunch of helper methods to make it easier to use. Calling it like a function will clone the inner value. You can also call a few traits like AddAssign on it directly without writing to it manually.
// create a signal
let signal = use_signal(|| 0);