如果你还不知道如何参加开源项目可以先阅读
一、初步调试
在/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大功告成