Все что написано до вас может быть:
а) написано хорошо
б) написано плохо
в) настраиваться легко и удобно (вытекает из А)
г) настраиваться плохо, кастомизация и универсальность на нуле, поддержка компонента медленная или вообще не производится (вытекает чаще всего из Б, но иногда хороший компонент могут просто забросить и тогда появляется его форк или конкурент, или не появляется).
Итого, при поиске компонента, смотрите на гитхабе: сколько issues (активных/закрытых и какие), обновляется ли компонент (если это требуется, обычно да, хотя бы реакт и проп-тайпсы должны быть версии повыше).
Следовательно, теперь вопрос, когда нужно взять уже готовый, а когда нет. Все зависит от временных затрат.
1) Если для выполнения чего либо вы нашли хороший компонент, понимаете как его настроить - берите. Если в процессе он вас не устроит, вы его либо допилите (что вряд ли, на уровне новичка), либо откажетесь и возьмете другой/напишете свой.
2) Если для выполнения чего либо, вы понимаете сколько это займет кода и какого, что это быстро/просто/удобно или если такого компонента, подходящего для вас, нет - пишете свой.
На практике может выглядеть так: есть библиотеки с графиками, есть UI библиотеки (которые устраивают вас по дизайну или для прототипа), для таблиц, для работы с датами, для календарей - то есть все популярные задачи, обычно уже сделаны, и сделаны хорошо - БЕРЕМ. Но вам для работы все равно останется место: нужно будет прислать в эти компоненты данные с сервера, научить их как-то отправлять от пользователя какие-то действия к вам на сервер и тд тп.