Akryum / vue-virtual-scroller

⚡️ Blazing fast scrolling for any amount of data
https://vue-virtual-scroller-demo.netlify.app
9.74k stars 915 forks source link

Functional sizeField for RecycleScroller's variable-size mode #848

Open ThEditor opened 10 months ago

ThEditor commented 10 months ago

Clear and concise description of the problem

When using recycle-scroller's variable size mode, a "sizeField" can be defined. This sizeField, however, can only be a constant number and not a function that outs a number. I have a component where sizes vary with respective to a scale parameter and hence, I need the sizeField to be a function (synchronous) that returns a number instead. (So that I can return something like defaultSize * scale)

Suggested solution

Currently, in variable size mode

current = items[i][field] || minItemSize

This can be replaced by

current = ((typeof items[i][field] === 'function') ? items[i][field]() : items[i][field]) || minItemSize;

Alternative

No response

Additional context

No response

Validations

ThEditor commented 10 months ago

I can open a PR if you guys are willing to accept this change. (Also, I'm using Vue 2 in my project that requires this behavior)

Akryum commented 10 months ago

It would probably make more sense to accept a function for itemSize prop

srackhall commented 8 months ago

接受 prop 的函数可能更有意义itemSize

If this feature is really implemented, that would be great

This feature is indeed very practical

In addition, if "itemSize" can support CSS units other than px, then it should be more flexible.