@postya

Как использовать тот же компонент множество раз, но с разными данными во Vue?

Имеется дочерний компонент, который я внедряю в родительский комопнент множество раз в разных местах.
Нужно,чтобы компонент был тот же, но менялись данные в разных местах приложения этого же компонента

Как можно использовать один и тот же компонент в раных местах, н ос разными данными?

Ожидаемый результат:
Компонент появляется в рзных метсах приложения и показывает данные

Текущий результат:
Появляется ошибка:
Connector.vue - error dublicated key 'input-output' vue/no-dupe-keys


Дочернйи компонент Connector.vue:
<template>
  <div class="connector">
    <p>{{input_output}}</p>
  </div>
</template>

<script>
  export default {
    name: "Connector",
    data() {
      return {
        input_output:"",        
      }
    },
    props: {
      input_output: String
    }
  }
</script>


Родительский компонент Module.vue:
<template>
<div class="module">
<Connector class="connector con1" v-bind:input_output="input1" :key="input1"/>
    <Connector class="connector con2" v-bind:input_output="input2" :key="input2"/>
    <Connector class="connector con3" v-bind:input_output="output1" :key="output1"/>
    <Connector class="connector con4" v-bind:input_output="output2" :key="output2"/>
</div>
</template>

<script>
  import Connector from "components/Connector";
  export default {
    name: "Module",
    components: {Connector},
    data() {
      return {
        input1: 'input',
        input2: 'input',
        output1: 'output',
        output2: 'output'
      }
    }
  }
</script>


5f5f1ae06423d243286648.jpeg
  • Вопрос задан
  • 693 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Так вы один и тот же параметр указали во входных свойствах (props) и в данных компонента (data). Уберите его из данных.
Ответ написан
@postya Автор вопроса
благодаря наводке Rsa97 я нашёл решение:

Дочерний компонент Connector.vue:

<template>
  <div class="connector">
    <p>{{connector}}</p>
  </div>
</template>

<script>
  export default {
    name: "Connector",
    data() {
      return {
        sections: {
          length: ""
        },
      }
    },
    props: {
      connector: String
    }
  }
</script>


Родительский компонент Module.vue:
<template>
  <div class="module">
       <Connector class="connector con1" :connector="input1"/>
    <Connector class="connector con2" :connector="input2"/>
    <Connector class="connector con3" :connector="output1"/>
    <Connector class="connector con4" :connector="output2"/>
  </div>
</template>

<script>
  import Connector from "components/Connector";
  export default {
    name: "Module",
    components: {Connector},
    data() {
      return {
        input1: 'input1',
        input2: 'input2',
        output1: 'output1',
        output2: 'output2'
      }
    }
  }
</script>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
А чего вы ждали? У вас дублируется key, так как input1 и input2 (output1 и output2) имеют одинаковое значение.
Ответ написан
Ваш ответ на вопрос

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

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