Literator
@Literator

Как передать данные в компонент VueJS 2?

Всем привет!

Только начал разбираться с VueJS.
Не могу понять как правильно передать данные в компонент, чтобы он мог эти данные отобразить.

index.html:
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Test</title>
	<meta name="description" content="">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
</head>
  <body>
    <my-header></my-header>

    <my-footer></my-footer>
  </body>
</html>


main.js:
import Vue from 'vue'
import router from './router'

import myheader from './components/header.vue'
import myfooter from './components/footer.vue'

Vue.config.productionTip = false

var headerVue = new Vue({
  el: 'my-header',
  router,
  template: '<myheader/>',
  components: { vooheader }
})

var posts = [{html_url: '#1', title: 'qwerty1'},
			{html_url: '#2', title: 'qwerty2'},
			{html_url: '#3', title: 'qwerty3'},
			{html_url: '#4', title: 'qwerty4'}];

var footerVue = new Vue({
  el: 'my-footer',
  router,
  template: '<myfooter/>',
  components: { voofooter },
  data() { return { posts: posts,
  			    news: posts,
  			    lastproducts: posts,
  				  }; 
  		 }
});


Как я предполагал после запуска массив posts должен передаться в footerVue, но этого не происходит. Проверял и просто визуально и с помощью VueDevtools.
abbcacd1e29544109bea6f4455ffdf3c.png

Подскажите, где я допускаю ошибку?
  • Вопрос задан
  • 1135 просмотров
Решения вопроса 1
landen13
@landen13
frontend-developer
Данные в компонент передаются только посредством props. Судя по коду, Вы неплохо так запутались :)

Посмотрите внимательно примеры в документации, там все очень хорошо написано и показано.

Если кратко:
Данные передаются через props. Принимаемые props изначально должны быть прописаны в компоненте.
Весь компонент должен быть описан в импортируемом .vue файле.
Далее он регистрируется глобально через Vue.component('my-header', myheader); (либо локально - способы регистрации компонента есть в документации).
Также должна быть обертка вокруг Ваших my-header и my-footer, например #my-app
Создается рутовый инстанс Vue с el: '#my-app', в котором лежат компоненты.
VueJS находит компоненты внутри #my-app и инициализирует их.
И в самом темплейте, где Вы прописали эти самые компоненты, им нужно передать данные.
Например, если у вас было в компоненте:
props: ['data']
то передавать их нужно как обычный биндинг атрибутов:
<my-footer v-bind:data="posts"></my-footer>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы