Skip to content

Commit a509f55

Browse files
committed
perf(freeDom): optmize
1 parent 6725b24 commit a509f55

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

packages/core/src/components/freeDom.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,8 @@ const freeDom = defineComponent({
232232
}
233233

234234
const onResize: ResizeFnCallback = (evt, { node, width: w, height: h, handle: axis }) => {
235-
const offsetW = -(w - width.value)
236-
const offsetH = -(h - height.value)
235+
const offsetW = -(w - (width.value || 0))
236+
const offsetH = -(h - (height.value || 0))
237237

238238
const axisH = axis[0]
239239
const axisV = axis[axis.length - 1]

packages/core/src/hooks/use-resizable-data.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@ export function useResizableData(
1717
height.value = getHeight()
1818
})
1919
function getWidth() {
20-
return props.w || props.modelValue.w || props.minWidth
20+
return props.w
21+
|| props.modelValue.w
22+
|| (props.autoSize ? undefined : props.minWidth)
2123
}
2224
function getHeight() {
23-
return props.h || props.modelValue.h || props.minHeight
25+
return props.h
26+
|| props.modelValue.h
27+
|| (props.autoSize ? undefined : props.minHeight)
2428
}
2529
async function syncSize(
2630
fixNonMonospaced: boolean,

packages/examples/free-dom/basic/single.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<template>
22
<section>
33
<FreeDom @update:model-value="pos = $event">
4-
<pre>{{ pos }}</pre>
4+
<div>长文本长文本长文本长文本长文本长文本长文本长文本</div>
55
</FreeDom>
6-
<FreeDom>
7-
<div>test1</div>
6+
<FreeDom :auto-size="false">
7+
<div>长文本长文本长文本长文本长文本长文本长文本长文本</div>
88
</FreeDom>
99
</section>
1010
</template>

packages/index.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,17 @@ title: '首页'
1919

2020
### 属性
2121

22+
:::info
23+
如果元素创建之初可以确定它的大小,可以禁用`autoSize`来优化性能
24+
:::
25+
2226
| 名称 | 类型 | 必填 | 默认值 | 可选值 | 说明 |
2327
| ---- | ---- | ---- | ----- | ----- | --- |
24-
| v-model/model-value | object | ❌ | - | - | 元素的位置及尺寸
28+
| v-model/model-value | <Desc desc="{ x: number, y: number, w: number, h: number }">object</Desc> | ❌ | - | - | 元素的位置及尺寸
29+
| v-model:x/x | number | ❌ | - | - | 元素在x轴上的位置
30+
| v-model:y/y | number | ❌ | - | - | 元素在y轴上的位置
31+
| v-model:w/w | number | ❌ | - | - | 元素的宽度
32+
| v-model:h/h | number | ❌ | - | - | 元素的高度
2533
| active | boolean || - | boolean | 手动控制元素的选中与否,仅影响样式 |
2634
| lock-aspect-ratio | boolean | ❌ | false | - | 缩放时是否按当前宽高比计算
2735
| handle | string | ❌ | - | - | 通过class或id指定允许触发拖曳的元素

0 commit comments

Comments
 (0)