vue注册新节点_vue怎么重新组装slots节点

在后台列表中,为了优化布局,使用Vue组件动态管理按钮显示。组件`button-groups`根据`number`属性限制显示的按钮数量,多余的按钮收纳到“更多”下拉菜单。在组件的`beforeUpdate`和`created`生命周期钩子中初始化`slots`。然而,在执行如置顶/取消置顶等操作并重新拉取数据后,按钮状态未能正确更新,且更多按钮的菜单始终隐藏,问题可能源于数据同步或组件更新逻辑。
摘要由CSDN通过智能技术生成

在后台列表中通常会有比较多的操作按钮 过多的按钮影响布局 也影响操作 因此想通过vue的组件来控制显示的按钮个数 多余的按钮自动被收进一个特殊的 更多 按钮里面,效果图:

组件定义:

Vue.component('button-groups', {

render(createElement) {

return createElement('div', {

class: 'vu-button-groups',

'data-i': Math.random() * 1000

}, [

...this.slots.slice(0, this.number),

createElement('ElTooltip', {

attrs: {

placement: 'bottom',

effect: 'light',

'popper-class': 'vu-button-groups-tooltip'

}

}, this.slots.length > this.number ? [

createElement('div', {class: 'vu-button-groups-more', slot: 'content'}, this.slots.slice(this.number)),

createElement('ElLink', ['更多', createElement('i', {class: 'el-icon-arrow-down'})])

] : [])

]);

},

props: {

number: {

type: Number,

default: 4

}

},

data() {

return {

slots: [],

key: 0,

}

},

beforeUpdate() {

this.init();

},

created() {

this.init()

},

methods: {

init() {

this.slots = this.$slots.default.filter(v => {

v.key = this.key ++;

return v.tag !== undefined

})

}

}

});

使用组件:

编辑

删除

{{scope.row.is_top == 1 ? '取消置顶' : '置顶'}}

开播记录

v-if="scope.row.showOrder" :size="size">订单

上面的代码实现了基本样式 但是在反复操作后会出现按钮功能功能异常的情况 例如:置顶/取消置顶操作后从服务器 重新拉取数据(拉取当前页,翻页) 置顶/取消置顶按钮的状态未根据数据变化做响应 更多按钮下的菜单处于一直隐藏的状态 请问是什么问题导致出现了这种问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值