JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/index.js"></script>
<div id="app">
	<ol>
		<virtual-list style="height: 360px; overflow-y: auto;"
		 :data-key="'id'" 
		 :data-sources="items" 
		 :data-component="itemComponent" />
	</ol>
</div>

CSS

body {
  padding: 20px;
  font-family: Helvetica;
}

#app {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
}

li {
  margin: 8px 0;
  border-bottom: solid 1px #dcdcdc;
}

JavaScript

var items = [];
  for (var i = 1; i <= 10000; i++) {
    items.push({
      id: i,
      title: 'item' + i,
    });
  }

const itemComponent = Vue.component('item-component', {
  props: {
    source: ""
  },
  template: '<li>{{source.title}}</li>'
});

new Vue({
  el: "#app",
  data: {
    
  }
})