“каждому компоненту присвоить индекс” — это не задача, это решение. какую ты задачу решаешь?
В компоненте используем хук. В этот хук передаем объект. Этот объект попадает в "глобальный" стор, и при каждом изменении "глобального" стора, мы производим действия которые меняют адресную строку.