zeyong tsai

Results 15 comments of zeyong tsai

@lijinke666 我日常用 Vue,所以我写了一个 Vue 的,你有空的话麻烦帮我看看思路对不对。[s2-vue](https://github.com/zeyongTsai/S2/commit/07b28c38ec69cd1af4c4d1760df24ee0d4078b8e) 目前碰到的问题是: 1. pagination 放到 s2Options 中,服务端分页的时候,需要将 pagination 透传到分页组件,分页组件抛出事件会改变 pagination这个 prop。这里就导致 wach s2Options 的时候分不清是否应该调用 `changeSheetSize`(默认都调用)[useSheetUpdate.ts](https://github.com/antvis/S2/blob/master/packages/s2-vue/src/hooks/useSheetUpdate.ts#L30) 2. 项目的 eslint 依赖了 [es-abstract^1.19](https://github.com/ljharb/es-abstract),这个版本发布的文件似乎不齐全(github源码齐全),影响 lint ```log Error: Failed to load...

1. 如果用外部 div 来画的话,主要是觉得里面的 S2 本身就有边框,然后又画一条,样式不好看(线条不重叠) 2. 画边框还需要去读取给到 S2 的 theme 配置结果,两边需要同步样式 3. 先渲染了内容少的,获取实际渲染的高度,更改DOM容器高度;然后再次渲染的时候内容变多了,这个时候就得先把DOM 容器高度重置为最大高度,然后绘制完毕探测实际高度再改变DOM高度,对使用者并不是特别方便呢

如果对数据响应及时性没有过高的要求,可以封装一个 el-input, 在 blur 以后才派发 `update:model-value` 从而更新 table 的 data。 否则每次输入都会改变 data 导致整个 table 内发生大量的 patch。

你的列明显不够他的复杂嘛。 [playground](https://element-plus.run/#eyJzcmMvQXBwLnZ1ZSI6Ijx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWxlZnQ6IDQwcHhcIj5cbiAgICAgIOi+k+WFpeahhlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgdi1tb2RlbD1cImFnZVwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAyNXB4OyBib3JkZXI6IDFweCBzb2xpZDsgbWFyZ2luOiA1cHggNXB4XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS10YWJsZVwiPlxuICAgICAgPGVsLXRhYmxlIGNsYXNzPVwidGFibGVcIiByZWY9XCJuY190YWJsZVwiIDpkYXRhPVwibGlzdDFcIiBoZWlnaHQ9XCIzMDBweFwiPlxuICAgICAgICA8ZWwtdGFibGUtY29sdW1uIGxhYmVsPVwiTmFtZVwiPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjZGVmYXVsdD1cInNjb3BlXCI+XG4gICAgICAgICAgICA8Y3VzdG9tLWlucHV0XG4gICAgICAgICAgICAgIDppbmRleD1cImByb3c6JHtzY29wZS4kaW5kZXh9YFwiXG4gICAgICAgICAgICAgIHYtbW9kZWw9XCJzY29wZS5yb3cubmFtZVwiXG4gICAgICAgICAgICAgIDprZXk9XCJzY29wZS5yb3cuaWRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L2VsLXRhYmxlLWNvbHVtbj5cbiAgICAgICAgPGVsLXRhYmxlLWNvbHVtbiBsYWJlbD1cIkRhdGVcIiB3aWR0aD1cIjE4MFwiPlxuICAgICAgPHRlbXBsYXRlICNkZWZhdWx0PVwic2NvcGVcIj5cbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIj5cbiAgICAgICAgICA8ZWwtaWNvbj48dGltZXIgLz48L2VsLWljb24+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPnt7IHNjb3BlLnJvdy5kYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC9lbC10YWJsZS1jb2x1bW4+XG4gICAgPGVsLXRhYmxlLWNvbHVtbiBsYWJlbD1cIk9wZXJhdGlvbnNcIj5cbiAgICAgIDx0ZW1wbGF0ZSAjZGVmYXVsdD1cInNjb3BlXCI+XG4gICAgICAgIDxlbC1idXR0b24gc2l6ZT1cInNtYWxsXCIgQGNsaWNrPVwiaGFuZGxlRWRpdChzY29wZS4kaW5kZXgsIHNjb3BlLnJvdylcIlxuICAgICAgICAgID5FZGl0PC9lbC1idXR0b25cbiAgICAgICAgPlxuICAgICAgICA8ZWwtYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICB0eXBlPVwiZGFuZ2VyXCJcbiAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVEZWxldGUoc2NvcGUuJGluZGV4LCBzY29wZS5yb3cpXCJcbiAgICAgICAgICA+RGVsZXRlPC9lbC1idXR0b25cbiAgICAgICAgPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L2VsLXRhYmxlLWNvbHVtbj5cbiAgICA8ZWwtdGFibGUtY29sdW1uIGxhYmVsPVwiaW5wdXRcIj5cbiAgICAgIDx0ZW1wbGF0ZSAjZGVmYXVsdD1cInNjb3BlXCI+XG4gICAgICAgIDxlbC1pbnB1dFxuICAgICAgICB2LW1vZGVsPVwic2NvcGUucm93LmlucHV0XCJcbiAgICAgICAgQGNoYW5nZT1cImhhbmRsSW5wdXRDaGFuZ2VcIlxuICAgICAgICAvPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L2VsLXRhYmxlLWNvbHVtbj5cbiAgICA8ZWwtdGFibGUtY29sdW1uIGxhYmVsPVwic2VsZWN0XCI+XG4gICAgICA8dGVtcGxhdGUgI2RlZmF1bHQ9XCJzY29wZVwiPlxuICAgICAgICA8ZWwtc2VsZWN0XG4gICAgICAgIHYtbW9kZWw9XCJzY29wZS5yb3cuc2VsZWN0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC9lbC10YWJsZS1jb2x1bW4+XG4gICAgICA8L2VsLXRhYmxlPlxuICAgICAgXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgQ3VzdG9tSW5wdXQgZnJvbSAnLi9DdXN0b21JbnB1dC52dWUnXG5pbXBvcnQgeyByZWYgfSBmcm9tICd2dWUnXG5cbmxldCBsaXN0MSA9IHJlZjx7IG5hbWU6IHN0cmluZzsgc2VsZWN0OiBzdHJpbmc7IGlkOiBudW1iZXIgfVtdPihbXSlcbmxldCBsaXN0MiA9IHJlZjx7IG5hbWU6IHN0cmluZzsgc2VsZWN0OiBzdHJpbmc7IGlkOiBudW1iZXIgfVtdPihbXSlcbmxldCBsaXN0MyA9IHJlZjx7IG5hbWU6IHN0cmluZzsgc2VsZWN0OiBzdHJpbmc7IGlkOiBudW1iZXIgfVtdPihbXSlcbmxldCBhZ2UgPSByZWYoJzExMScpXG5cbmNvbnN0IGxpc3QgPSBbXVxuZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHtcbiAgbGlzdC5wdXNoKHtcbiAgICBuYW1lOiAnJyxcbiAgICBpZDogTWF0aC5yYW5kb20oKSxcbiAgICBzZWxlY3Q6ICcnLFxuICAgIGRhdGU6ICcyMDE2LTA1LTAzJyxcbiAgICBhZGRyZXNzOiAnTm8uIDE4OSwgR3JvdmUgU3QsIExvcyBBbmdlbGVzJyxcbiAgICBpbnB1dDogJ3ZhbHVlJytpXG4gIH0pXG59XG5saXN0MS52YWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGlzdCkpXG5saXN0Mi52YWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGlzdCkpXG5saXN0My52YWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGlzdCkpXG5cblxuY29uc3QgaGFuZGxJbnB1dENoYW5nZT1mdW5jdGlvbiguLi5hcmdzKXtcbmNvbnNvbGUubG9nKCdpbiBoYW5kbGVJbnB1dENoYW5nZSB0YWJsZURhdGEnLHRhYmxlRGF0YSlcbn1cblxuaW50ZXJmYWNlIFVzZXIge1xuICBkYXRlOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGFkZHJlc3M6IHN0cmluZ1xufVxuXG5jb25zdCBoYW5kbGVFZGl0ID0gKGluZGV4OiBudW1iZXIsIHJvdzogVXNlcikgPT4ge1xuICBjb25zb2xlLmxvZyhpbmRleCwgcm93KVxufVxuY29uc3QgaGFuZGxlRGVsZXRlID0gKGluZGV4OiBudW1iZXIsIHJvdzogVXNlcikgPT4ge1xuICBjb25zb2xlLmxvZyhpbmRleCwgcm93KVxufVxuPC9zY3JpcHQ+XG48c3R5bGUgc2NvcGVkID5cbi5jdXN0b20tdGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbn1cbjwvc3R5bGU+IiwiaW1wb3J0LW1hcC5qc29uIjoie1xuICBcImltcG9ydHNcIjoge31cbn0iLCJ0c2NvbmZpZy5qc29uIjoie1xuICBcImNvbXBpbGVyT3B0aW9uc1wiOiB7XG4gICAgXCJ0YXJnZXRcIjogXCJFU05leHRcIixcbiAgICBcImpzeFwiOiBcInByZXNlcnZlXCIsXG4gICAgXCJtb2R1bGVcIjogXCJFU05leHRcIixcbiAgICBcIm1vZHVsZVJlc29sdXRpb25cIjogXCJCdW5kbGVyXCIsXG4gICAgXCJ0eXBlc1wiOiBbXCJlbGVtZW50LXBsdXMvZ2xvYmFsLmQudHNcIl0sXG4gICAgXCJhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uc1wiOiB0cnVlLFxuICAgIFwiYWxsb3dKc1wiOiB0cnVlLFxuICAgIFwiY2hlY2tKc1wiOiB0cnVlXG4gIH0sXG4gIFwidnVlQ29tcGlsZXJPcHRpb25zXCI6IHtcbiAgICBcInRhcmdldFwiOiAzLjNcbiAgfVxufVxuIiwic3JjL0N1c3RvbUlucHV0LnZ1ZSI6Ijx0ZW1wbGF0ZT5cclxuICA8ZWwtaW5wdXRcclxuICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgIDptb2RlbC12YWx1ZT1cIm1vZGVsVmFsdWVcIlxyXG4gICAgQHVwZGF0ZTptb2RlbFZhbHVlPVwiZW1pdCgndXBkYXRlOm1vZGVsVmFsdWUnLCAkZXZlbnQpXCJcclxuICAvPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZGVmaW5lUHJvcHMsIG9uVXBkYXRlZCwgb25Nb3VudGVkIH0gZnJvbSAndnVlJ1xyXG5cclxubGV0IHByb3BzID0gZGVmaW5lUHJvcHM8e1xyXG4gIGluZGV4OiBzdHJpbmdcclxuICBtb2RlbFZhbHVlOiBzdHJpbmdcclxufT4oKVxyXG5sZXQgZW1pdCA9IGRlZmluZUVtaXRzKFsndXBkYXRlOm1vZGVsVmFsdWUnXSlcclxuXHJcbmNvbnNvbGUubG9nKCdzZXR1cCcpXHJcbm9uVXBkYXRlZCgoKSA9PiB7XHJcbiAgY29uc29sZS5sb2coJ3VwZGF0ZWQ6JywgcHJvcHMuaW5kZXgpXHJcbn0pXHJcbm9uTW91bnRlZCgoKSA9PiB7XHJcbiAgY29uc29sZS5sb2coJ29uTW91bnRlZCcpXHJcbn0pXHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuLmN1c3RvbS1pbnB1dCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAzMHB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNiYmI7XHJcbn1cclxuPC9zdHlsZT4iLCJfbyI6e319)

sorry, I cannot to reproduce this bug. perhaps the data for the Tree component was not enough, or some business logic was stripped out by you.

那你可以对数据做一个处理,用部门id + 用户id 作为 node-key。 我看了看 antd 也是一样的效果,不会去考虑一些特殊场景。

![image](https://github.com/element-plus/element-plus/assets/8591261/5f3d857a-86d6-4e2e-ab35-c6c4e267d165)