Javascript Vue-将相同的数据从一个组件传递到多个组件

Javascript Vue-将相同的数据从一个组件传递到多个组件,javascript,webpack,vue.js,vuejs2,vue-component,Javascript,Webpack,Vue.js,Vuejs2,Vue Component,我有以下代码 main.js new Vue({ el: '#app', template: '<App/>', components: { App } }) newvue({ el:“#应用程序”, 模板:“”, 组件:{App} }) App.vue <template> <div id="app"> // this does not pass the data to the component <basics :

我有以下代码

main.js

new Vue({
  el: '#app',
  template: '<App/>',
  components: { App }
})
newvue({
el:“#应用程序”,
模板:“”,
组件:{App}
})
App.vue

<template>
  <div id="app">
    // this does not pass the data to the component
    <basics :resume="resume"></basics>
    <education :resume="resume"></education>
    // this gets the value from the json file
    {{resumeData.name}}
    {{resumeData.education}}
  </div>
</template>

<script>

import Basics from './components/Basics.vue'
import Education from './components/Education.vue'
import Resume from '../resume.json'

export default {
  name: 'app',
  data() {
    return {
      resumeData: Resume
    }
  },
  components: {
    Basics,
    Education
  }
}
</script>
<template>
    <div>
        <p>Basics</p>
        // this does not get the value from the json file
        {{resumeData.name}}
    </div>
</template>
<template>
    <div>
        <p>Education</p>
        {{resumeData.education}}
    </div>
</template>

//这不会将数据传递给组件
//这将从json文件中获取值
{{resumeData.name}
{{resumeData.education}
从“./components/Basics.vue”导入基础知识
从“/components/Education.vue”导入教育
从“../Resume.json”导入简历
导出默认值{
名称:“应用程序”,
数据(){
返回{
简历数据:简历
}
},
组成部分:{
基础知识,
教育类
}
}
/components/Basics.vue

<template>
  <div id="app">
    // this does not pass the data to the component
    <basics :resume="resume"></basics>
    <education :resume="resume"></education>
    // this gets the value from the json file
    {{resumeData.name}}
    {{resumeData.education}}
  </div>
</template>

<script>

import Basics from './components/Basics.vue'
import Education from './components/Education.vue'
import Resume from '../resume.json'

export default {
  name: 'app',
  data() {
    return {
      resumeData: Resume
    }
  },
  components: {
    Basics,
    Education
  }
}
</script>
<template>
    <div>
        <p>Basics</p>
        // this does not get the value from the json file
        {{resumeData.name}}
    </div>
</template>
<template>
    <div>
        <p>Education</p>
        {{resumeData.education}}
    </div>
</template>

基础知识

//这不会从json文件中获取值 {{resumeData.name}
/components/Education.vue

<template>
  <div id="app">
    // this does not pass the data to the component
    <basics :resume="resume"></basics>
    <education :resume="resume"></education>
    // this gets the value from the json file
    {{resumeData.name}}
    {{resumeData.education}}
  </div>
</template>

<script>

import Basics from './components/Basics.vue'
import Education from './components/Education.vue'
import Resume from '../resume.json'

export default {
  name: 'app',
  data() {
    return {
      resumeData: Resume
    }
  },
  components: {
    Basics,
    Education
  }
}
</script>
<template>
    <div>
        <p>Basics</p>
        // this does not get the value from the json file
        {{resumeData.name}}
    </div>
</template>
<template>
    <div>
        <p>Education</p>
        {{resumeData.education}}
    </div>
</template>

教育

{{resumeData.education}
如何将数据从一个组件传递到另一个组件,以便所有不同的vue组件都从同一个json文件读取数据,而无需在每个组件中插入代码
import Resume from'../Resume.json


我希望你能理解我的问题。

更常见/标准的方法就是使用道具。或者您必须在所有组件中导入json

如果您有许多组件,并且确实不想多次传递同一道具,那么有一个棘手的解决方案:将数据全局注入Vue.prototype:

Vue.prototype.$resume = {
  name: 'foo',
  education: 'bar',
  ...
}
有了它,您的所有组件都可以通过
this.$resume
访问它。但要明智地使用它


如果您有其他类似的情况,您可能应该选择。

在vue.js课程中,您可以用3种不同的方法解决此问题

  • 使用道具传递基础知识和教育方面的数据
  • Vuex
  • 事件箱