Best way to do unknown number of nested v-for loops, or how to do while loops in VueJs (is there a "v-while"?)
There is no v-while, no. You can however use v-for over a computed property (which you can compute using while if you so wish).
Although I don't see a reason to use any while-loop. What you have is a data structure with topics and subtopics of any arbitrary length. Using a recursive component for this, which you have done here, is a good choice.
About the only thing that I would change is to, instead of using arritem[0] and arritem[1], using an object with properties name and children. This can possibly also help you determine if a component has any children or not.