One more thing, in the State function you would compute all relevant property values of the application state. At that point the proposal has been processed and you can no longer access it. Here we simply compute the structural relations of the model (in a reactive way).
// compute state representation
let stateRepresentation = xyz(model)
// render ifnonext action
the nextAction predicate would return false only when the nextAction is synchronous, in which case you need to skip the rendering.
When the next action is asynchronous, you may render, but that is your decision