2018-01-15 18:54:02 +00:00
|
|
|
<div class="virtual-list-item"
|
|
|
|
ref:node
|
2018-01-16 00:12:07 +00:00
|
|
|
style="transform: translate3d(0, {{offset}}px, 0);"
|
2018-01-15 20:23:28 +00:00
|
|
|
data-virtual-key="{{key}}"
|
2018-01-16 00:35:08 +00:00
|
|
|
data-virtual-index="{{index}}"
|
2018-01-15 20:23:28 +00:00
|
|
|
>
|
|
|
|
<:Component {component} virtualProps="{{props}}" />
|
2018-01-15 18:54:02 +00:00
|
|
|
</div>
|
|
|
|
<style>
|
|
|
|
.virtual-list-item {
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
will-change: transform;
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
<script>
|
2018-01-15 20:23:28 +00:00
|
|
|
import { virtualListStore } from '../_utils/virtualListStore'
|
|
|
|
|
2018-01-15 18:54:02 +00:00
|
|
|
export default {
|
|
|
|
oncreate() {
|
2018-01-16 00:35:08 +00:00
|
|
|
'VirtualListItem: oncreate'
|
2018-01-15 20:23:28 +00:00
|
|
|
let itemHeights = this.store.get('itemHeights')
|
2018-01-16 00:35:08 +00:00
|
|
|
let key = this.get('key')
|
|
|
|
itemHeights[key] = this.refs.node.offsetHeight
|
|
|
|
this.store.set({
|
|
|
|
itemHeights: itemHeights
|
|
|
|
})
|
2018-01-15 18:54:02 +00:00
|
|
|
},
|
2018-01-15 20:23:28 +00:00
|
|
|
store: () => virtualListStore
|
2018-01-15 18:54:02 +00:00
|
|
|
}
|
|
|
|
</script>
|