Pass data from parent component to child of child in Vue js

I am deperately searching for a way to pass data from a parent component to a child of the child component. I know I can use props to do this like in this thread Vue JS Pass Data From Parent To Child Of Child Of Child

But I only get it to work for the "next" child component and I get stuck for the second one.

My parent component:

<ResultBar :carbondata="realCarbonValues" />

data() {
return {
    realCarbonValues: {
        slabs: 20,
        beams: 0, 
        columns: 0,
        foundation: 0,
        core: 0
    }
};

My child component:

props: {
    carbondata:Object
},


console.log(this.carbondata.slabs)

Now, I can log the data in the console from by using the child component

But what do I have to do in the next child componet to pass the data correctly?


Solution 1:

depending on what you are trying to do you can just pass it directly as prop again.

Parent:

<Child :prop-i-wanna-pass-deeply="something" />

Child:

<GrandChild :props-i-wanna-pass-deeply-again="propsIWannaPassDeeply" />

GrandChild:

<div>{{ propsIWannaPassDeeplyAgain }} is now here</div>


or just use provide and inject to avoid prop-drilling.

See: https://vuejs.org/v2/api/#provide-inject

Read the note about reactivity of provide/inject.

Parent:

<Child /> <!-- no need to pass the prop -->

provide() {
  return {
    something: "fooAbc",
  }
}

Child:

<GrandChild />

GrandChild:

<div>{{ something }}</div>

inject: ['something']