Estude a tecnologia de slot de notas no Vue


No Vue, quando chamamos um subcomponente, podemos modificar uma certa parte do código do subcomponente, para que o subcomponente possa atender melhor às nossas necessidades. Com a tecnologia de slot, podemos fazer com que a estrutura do componente filho se adapte melhor ao componente atual quando o componente pai é chamado.

 Tecnologia de slot:

1. Slot padrão (slot anônimo):

O slot é relativamente pesado e adequado para uma inserção simples e contínua. O conteúdo do modelo do modelo será inserido no marcador de posição. Se houver vários marcadores de posição, o conteúdo do modelo será inserido uma vez.

 

// 父组件
<div>这是父组件
    <Younger :list="list">
        <template>
            <span>要插入的内容</span>
		</template>
    </Younger>
</div>


data: function() {
    return {
        list: [1,2,3,4]
    };
},
components: {
    Younger
},

// 子组件
我是子组件
<ul>
    <li v-for="item in list">
        <span v-text="item"></span>
		<slot></slot>
	</li>
    <slot></slot>
</ul>


// 插槽执行后的html结构
<div>这是父组件
    我是子组件
    <ul>
        <li v-for="item in list">
            <span v-text="item"></span>
		    <span>要插入的内容</span>
	    </li>
        <span>要插入的内容</span>
    </ul>
</div>

resultado da operação:

2. Espaço nomeado:

Atribua ao slot de espaço reservado um atributo de nome. Quando o componente pai é chamado, o template template deve usar o atributo v-slot: name para especificar a inserção de um slot específico. O template sem v-slot é considerado o slot padrão e não pode ser inserido no slot nomeado.

v-slot: [nome do slot dinâmico], também pode ser abreviado, por exemplo, v-slot: header é igual a #header.

// 父组件
这是父组件
<Younger :list="list">
    <template v-slot:one>
        <span>这是插槽:one要插入的内容</span>
	</template>
	<template v-slot:two>
		<span>这是插槽:two要插入的内容</span>
	</template>
	<template>
		<span>这是插槽:two要插入的内容</span>
	</template>
</Younger>


// 子组件
我是子组件
<ul>
    <li v-for="item in list">
        <span v-text="item"></span>
		<slot name="one"></slot>
    </li>
    <slot name="two"></slot>
</ul>

resultado da operação:

3. Espaço de escopo:

Às vezes, precisamos passar valores aos slots nos subcomponentes para exibi-los. O processo é que o componente pai primeiro passa dados de valor para o componente filho, e também precisamos usar esse valor no modelo do componente pai, mas não podemos usar diretamente os dados no componente pai, o que fará com que ele estar fora de sincronia. A melhor maneira é deixar o componente filho passar os dados para o template do template, e então podemos aceitar o valor dos dados e chamá-lo. Observação: o valor passado pelo componente filho é um objeto e o nome da chave é modelo.

// 父组件
这是父组件
<Younger :list="list">
    <template slot-scope="{ model  }">
		<span>这是插槽:one要插入的内容</span> |
		<span>传过来的值为:{
   
   {model}}</span>
	</template>
</Younger>

// 子组件
我是子组件
<ul>
    <li v-for="item in list">
        <span v-text="item"></span>
		<slot :model="item"></slot>
	</li>
</ul>

 Os resultados da operação são:

Resumindo, um slot é um espaço reservado para o componente filho se preparar para o componente pai. O componente pai pode escrever qualquer código no modelo para substituir este espaço reservado. Isso pode tornar o código mais elegante.

Acho que você gosta

Origin blog.csdn.net/qq_41339126/article/details/109385467
Recomendado
Clasificación