Prop drilling is what happens when a component several levels down the component tree needs a property from a higher level component, but no intermediate component needs that prop. For example, in the below code, `level1` needs to have a `message` prop just to pass that prop to `level2`.
`message` is an example of prop drilling
With `provide`, the top level `app` can define a reactive property `state` that the `level2` component can then pull in using `inject` as shown below.
`level2` accesses `message` with no involvement from `level1`
The provide/inject API makes it easy to define a “long range prop” that’s fully reactive. Not only does `level2` get the initial `state`, but the template automatically updates when the top-level app’s state changes without any involvement from the `level1` component.