vue关于饿了吗ui的作用域插槽

xd们为什么elementui不需要作用域插槽,有的又需要呢,往子组件里面插入不是需要作用域插槽吗

<el-table-column prop="prop" label="属性值名称列表" width="width">
            <template slot-scope="{row,$index}">
              <el-tag :key="tag.id" v-for="(tag,index) in row.spuSaleAttrValueList" :disable-transitions="false" @close="row.spuSaleAttrValueList.splice(index,1)" closable>
                {{tag.saleAttrValueName}}
              el-tag>
              <el-input class="input-new-tag" v-if="row.inputVisible" v-model="row.inputValue" ref="saveTagInput" size="small" @keyup.enter.native="handleInputConfirm(row)" @blur="handleInputConfirm(row)">
              el-input>
              <el-button v-else class="button-new-tag" size="small" @click="addSaleAttrValue(row)">添加el-button>
            template>
          el-table-column>


     <el-dialog :visible.sync="dialogVisible">
          <img width="100%" :src="dialogImageUrl" alt="">
        el-dialog>

作用域插槽是一种特殊的插槽,它允许您将子组件的作用域传递到父组件中。当您需要将子组件的数据传递到父组件时,您可以使用作用域插槽。具体来说,作用域插槽使您可以在父组件中访问子组件的数据,从而允许您对其进行自定义渲染。

ElementUI 中的某些组件(例如 )不需要作用域插槽,因为它们没有需要传递给父组件的特殊数据。对于需要作用域插槽的组件,您可以使用 标签和 slot-scope 属性来创建作用域插槽。

在你的代码示例中,你使用了作用域插槽来自定义渲染了 和 子组件。在 slot-scope 属性中,你使用了对象解构语法将 row 和 $index 从父组件传递到了子组件,以便可以在子组件中访问这些数据。

在Vue组件中,父组件可以将数据通过props属性传递给子组件,但是对于slot插槽,由于插槽内容是由父组件传入的,因此它的作用域是父组件的,而不是子组件的。在这种情况下,如果需要在子组件中访问父组件的数据,就需要使用作用域插槽。

但是对于element-ui组件库的部分组件,例如el-table-column、el-table-column-group等,这些组件内部已经处理好了slot的作用域,使其可以直接访问父组件的数据,因此不需要使用作用域插槽。在这些组件中,父组件中绑定在slot-scope上的数据可以直接在子组件中访问。例如上面的代码中,父组件通过slot-scope传递了row和$index两个数据给子组件,子组件中的模板可以直接访问这两个数据。

插槽分为3种,默认插槽:不需要写名字,默认插入默认位置,没有参数传递。具名插槽:需要定义名字,插入组件规定好的位置,没有参数传递。
作用域插槽:需要定义名字,插入组件规定好的位置,有参数传递(被插入组件传递参数给插入的模块)。