если новое значение стейта не зависит от текущего значения, то однозначно - useState.
а если зависит, то useReducer может быть удобнее (как минимум, в ряде случаев позволит обойтись без useCallback), но тут лучше посмотреть на оба варианта и сравнить, какой больше нравится. Хотя вот в простом случае, если в dispatch не нужно кидать параметр, то useReducer явно лучше