The core value of front-end JavaScript frameworks is state management. You don't need to use a framework, but the need to manage complex application state doesn't go away.
Take this example: when a checkout button on an ecommerce website/application is triggered, the button should reflect that state and prevent re-triggering the same action so the button has to be disabled, then ideally a loading state has to be shown. When that action fails, an error may need to be displayed. Ideally you would use native DOM states first, ARIA states may be used if no native DOM states can be used, and if that's not enough then custom data states may be necessary.
Styling should be reacting to application state, preventing impossible states and bugs to create predictable UIs. Thus, styling is also a state management concern. UI=fn(state).