Хорошо, я думаю, что вы должны управлять действиями точно так же.
В магазине пользователь должен быть неопределенным в начале.
const state: UserState = {
user: undefined,
isFetching: false,
lastTimeFetched: undefined,
invalidated: true
}
Тогда Вам следует всегда проверять, еслиУ пользователя есть значение в хранилище.
Когда вы загружаете приложение или компонент, оно будет неопределенным, и вы сделаете вызов остальной конечной точке.
Во время вызова кконечной точкой будет isFetching.
После этого вы должны установить user для того пользователя, которого вы получили, lastTimeFetched - на время, когда вы выбрали пользователя, и сделать недействительным значение false.
Почему время и недействительным? Может быть полезно, если вы хотите перезагрузить пользовательскую информацию через определенное время.
Я думаю, вы должны проверить, имеет ли поле пользователя значение, только в первый раз, когда вы загружаете функциональный компонент, который использует этозначение.