It's kind of the fundamental way you would want an FSM to work, I think.
'do this if..' is basically done by firing an event off and leaving the state. You can always just manipulate some data and stay in the same state, or fire an event that just loops back into itself.
You could code custom actions to change some variables rather than firing events or you could have a background FSM basically do processes, then mirror that data over to an FSM that executes and changes based on that data, kind of like modularizing how things work.