Ошибка в том, что ссылка на startDate не поменяется. Значит подписки не сработают, компоненты не перерисуются.
Я не пробовал делать именно так ка кнаписали вы, но в моем случае я работаю с датепикером от material-ui, он работает с объектом не на прямую, а возвращет новое значение, которое я записываю через setStartDate.
Но понял в чем ошибка подхода, всем большое спасибо. То есть, подводя итог, самый нормальный вариант - храним в startDate moment().subtract(1, 'months').startOf('day').getDate() , в компоненте при необходимости преобразуемо его снова в moment, и все будет хорошо, никаких проблем с мутабельностью?