#default=“{ row }“ 和 #default=“scope“的区别

在 Element Plus 的  中,#default="{ row }" 和 #default="scope" 本质上是相同的概念,区别在于 变量解构的写法 和 可访问属性的范围。以下是具体区别:


1. 写法区别

写法 特点
#default="scope" 接收完整的插槽作用域对象
#default="{ row }" 直接解构出 row 属性(ES6 对象解构语法)

2. 可访问属性

假设数据对象结构为:

{
  row: {},     // 当前行数据
  $index: 0,   // 行索引
  column: {},  // 当前列配置
  // ...其他属性
}
通过 scope 访问:

通过解构 { row } 访问:


3. 何时选择哪种写法?

场景 推荐写法 示例
只需要行数据时 { row }(更简洁) 显示行内容、状态标签
需要行索引或其他属性时 scope(更完整) 需要显示行号(scope.$index + 1
需要操作列配置时 scope 动态修改列样式、根据列属性判断逻辑

4. 代码对比

使用 scope

  

使用 { row }

  


5. 本质原理

两者访问的是同一个作用域对象,只是通过解构语法提取了需要的属性。以下两种写法完全等价:

// 写法 1:完整对象
const scope = { row: {}, $index: 0, column: {} };
console.log(scope.row);

// 写法 2:解构赋值
const { row } = { row: {}, $index: 0, column: {} };
console.log(row);

总结

特性 #default="scope" #default="{ row }"
可访问属性 所有属性(row/$index等) 仅解构出的属性(如row)
代码简洁性 需要 scope.row 访问 直接使用 row
适用场景 需要多属性操作时 只需行数据时
本质区别 无(同一对象的不同写法)

根据实际需求选择即可,如果需要行号或其他属性,用 scope;如果只需行数据,解构 { row } 更简洁。

你可能感兴趣的:(vue.js,前端,javascript)