Element3.0升级日记 - TimeLine组件

简介: 如果你还不知道如何参加开源项目可以先阅读【跟我一起编写Vue3版ElementUI】

一、初步调试


在/build/build-entry.js中将组件加入白名单


网络异常,图片无法展示
|


npm run dev


网络异常,图片无法展示
|


编译没出问题


浏览器打开element.eleme.cn/#/zh-CN/com…组件Example没有出来 发现有错误


网络异常,图片无法展示
|


断点调试一下


网络异常,图片无法展示
|


简单改一下


网络异常,图片无法展示
|


居然就OK了


网络异常,图片无法展示
|


哈哈  奥利给!!! 可以PR了


二、修改文件结构


调整后的结构 这个地方就不仔细说了。


网络异常,图片无法展示
|


三、VTU测试


接下来我们来重新编写测试Case,换用Vue3后需要使用vue-test-utils-next进行单元测试。 其实从写法上讲比原有的测试方案要简便很多。


参考 /unit/mocks/timeline.spec.js下面的测试用例


网络异常,图片无法展示
|


运行测试


jest packages/timeline --watch


测试代码如下


import Timeline from '../Timeline.vue'
import { mount } from '@vue/test-utils'
describe('Timeline.vue', () => {
  it('should slot works', () => {
    const wrapper = mount(Timeline, {
      slots: {
        default: [`A`, `B`]
      }
    })
    expect(wrapper.find('.el-timeline').text()).toBe('AB')
  })
  it('should props reverse works', () => {
    const wrapper = mount(Timeline, {
      props: {
        reverse: true
      },
      slots: {
        default: [`A`, `B`]
      }
    })
    expect(wrapper.find('.el-timeline').text()).toBe('BA')
  })
  it('should slot null', () => {
    const wrapper = mount(Timeline, {})
    expect(wrapper.find('.el-timeline').text()).toBe('')
  })
  it('should slot empty array', () => {
    const wrapper = mount(Timeline, {
      slots: {
        default: []
      }
    })
    expect(wrapper.find('.el-timeline').text()).toBe('')
  })
})


四、修改逻辑


实验中发下一个小bug 就是逆序属性修改后插槽中的元素没有响应重新排序。


经过调查发现这个是由于Vue的增加了Fragment节点造成的。也就是说如果插槽中的如果放入过个元素会增加Fragment节点。


这个本来是一个新特性。但是在这里需要增加相应的逻辑


修改后的结果


网络异常,图片无法展示
|


五、创建PR


网络异常,图片无法展示
|


相关ISSUE添加评论github.com/kkbjs/eleme…


网络异常,图片无法展示
|


这样PR上面会有相关的显示


网络异常,图片无法展示
|


OK大功告成


参考资料





相关文章
|
3月前
|
JavaScript 前端开发
在Vue3+ElementPlus项目中实现一个简单的新增/移除行记录的小组件
在Vue 3和Element Plus项目中创建一个支持新增和移除行记录的简单表格组件。
286 0
|
4月前
|
开发框架 前端开发 JavaScript
在微信框架模块中,基于Vue&Element前端,通过动态构建投票选项,实现单选、复选的投票操作
在微信框架模块中,基于Vue&Element前端,通过动态构建投票选项,实现单选、复选的投票操作
|
6月前
|
JavaScript 前端开发 定位技术
《vue3实战》在created生命周期中运用slice()方法结合element plus组件实现电影评价系统的分页
《vue3实战》在created生命周期中运用slice()方法结合element plus组件实现电影评价系统的分页
|
6月前
|
小程序 IDE 开发工具
【社区每周】修复开启样式隔离后, picker-view 组件部分属性不生效(11月第二期)
【社区每周】修复开启样式隔离后, picker-view 组件部分属性不生效(11月第二期)
45 10
|
6月前
|
API
【鸿蒙软件开发】ArkTS基础组件之DataPanel(数据面板)、DatePicker(日期选择)
【鸿蒙软件开发】ArkTS基础组件之DataPanel(数据面板)、DatePicker(日期选择)
250 0
|
6月前
第二十一章 案例TodoList之新增数据
第二十一章 案例TodoList之新增数据
elementUI 的el-select组件编辑时点击没反应效果demo(整理)
elementUI 的el-select组件编辑时点击没反应效果demo(整理)
|
前端开发
【React工作记录五十六】新增编辑的组件实现
【React工作记录五十六】新增编辑的组件实现
95 0
|
算法 开发工具 git
【Vue3.0移动端项目--旅游网】-- 详情页的标签定位滚动
【Vue3.0移动端项目--旅游网】-- 详情页的标签定位滚动
177 0
【Vue3.0移动端项目--旅游网】-- 详情页的标签定位滚动