The UI is just a grandiose transformation of data. It is also an observer of this data and fires actions to change it. Since data (aka state) is so central to a UI, it makes sense we start first by modeling this state. With MobX, observables represent that state. Looking back at the UI design from before, we can identify various parts of the observable state:
- There is the search-text that the user types. This is an
observable
field of type string. - There is an observable array of results.
- There is meta information about the results, such as the current subset and the total result count.
There is some state to capture the
async search()
operation that we will be invoking. The initialstatus
of the operation isempty
. Once the user invokes the search, we are in thepending
state. When the search completes, we could either be in thecompleted
orfailed
state. This looks more like an enumeration of<empty>
,pending
,completed
, orfailed
, and can be captured with...