Единственным решением вижу pointer-events: none; на появляющемся блоке.
Если вам не нужно, чтобы пользователь взаимодействовал с этим блоком — это подойдет.
В противном случае лучше поискать другое решение. https://codepen.io/psr1919plus21/pen/zewNqq
Илья, Пользователь это не увидит, если вы заведете специальный тип ошибок "которые нужно показывать пользователю". В catch блоке, если упавшая ошибка предназначается пользователю — вы показываете ее пользователю, если тип ошибки другой — обрабатываете ее как-то иначе.
checked={ (curVal || val) }
Но вообще, конечно, лучше передавать одно значение в пропсах, а логику определения дефолтное/кастомное вынести на уровень выше.