Accessing data directly from a child or a parent component without knowing whether they exist can be very dangerous.
In Vue, it's possible to make your component behavior like an interface and have a common and abstract function that won't change in the development process. The process of dependency injection is a common paradigm in the developing world and has been implemented in Vue also.
There are some pros and cons to using the internal Vue dependency injection, but it is always a good way to make sure that your children's components know what to expect from the parent component when developing it.