vuejs рендерит часть шаблона внутри разных элементов без повторения

Я новичок в Vuejs. Это то, что мне нужно сделать.

<div v-for="r in records">
    <div v-if="r.something">
        <div id="x">
            {{ r. something}}
            more of r here.
        </div>
    </div>

    <div v-else id="x">
        same div as in the block above.
    </div>
</div>

То, что я хочу сделать, это не определять div с id x два раза, так как он огромен.

1 ответ

Сделайте ваш div компонентом и обращайтесь к нему в обоих местах.

Есть много способов определить ваш компонент. Это пример показывает только один. Если вы используете WebPack, используйте один файловый компонент. Затем вы можете иметь свой скрипт, html и css в одном файле, который будет предварительно скомпилирован. Это лучший способ управлять своим "огромным" дивом. Затем вы можете продолжить рефакторинг и разбить его на несколько компонентов.

const myComponent = {
  template: "<div :id='id'>HELLO, my id is {{id}}. r.foo is {{r.foo}} </div>",
  props: {
    id: String
  },
  data() {
    return {
      r: {
        foo: 'bar'
      }
    }
  }
}
<div v-for="r in records">
  <div v-if="r.something">
    <my-component id='x' />
  </div>

  <div v-else id="x">
    <my-component id='x' />
  </div>
</div>

Другие вопросы по тегам