As a rule of thumb, what you do in your free time is none of your employer's business. Their right to assign tasks is limited to work hours. They hired you for a specific position, presumably after interviewing you for that position, and the skill set that you had at that time. They have since then changed their mind and decided they want a different skill set. Whether that means hiring someone else or training existing employees, it is a strategic decision the business made and any expenses related to that are theirs to cover.
Now, learning new technologies is part of the job, and your employer would have reason to complain if you refused to learn the new tech stack at all. Considering the resources available today, one could also argue that it is reasonable to expect an experienced software developer to familiarize themself with a new language or framework without the employer providing extensive training. However, the key difference between training that you do of your own accord and training mandated by your employer is who gets to decide if, what, when and how much you learn. If they pay for it, they get to choose. If not, it's your time to do with as you will.
Personally, if I consider the tech in question worthwhile and the company is otherwise decent, I don't mind "throwing them a bone" and picking that language or framework for my next hobby project, but to demand this kind of unpaid overtime raises all sorts of red flags.
In my experience, the generally accepted practice is to factor learning time into the estimates of any project that requires employees to learn a new technology. Adding a team member with the desired skill set is a good way to speed up that process, but it will still delay the project. Whether or not that's worth it is up to the business to decide.