JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.js"></script>
<table id="grid" class="table table-striped table-bordered cell-border">
  <thead>
    <th>Code</th>
    <th>Description</th>
  </thead>
</table>

JavaScript

var app = (function() {

	var module = {};
  
  /**
   * Dummy data container
   */
  module.data = [];
  
  /**
   * Prepare a fake json array containing 20.000 records. Then retrieve the specified ones by skip and take arguments.
   */
  module.getDummyData = function(skip, take) {
  	
    // prepare data
    if (this.data.length == 0) {
      for(var i=0; i<20000; i++) {
				this.data.push({
        	Code: i.toString(),
          Description: "Description " + i.toString()
        })
      }
    }
    
    // returns data
   	return {
        draw: take,
        recordsTotal: this.data.length,
        recordsFiltered: this.data.length,
        data: Enumerable.From(this.data).Skip(skip).Take(take).ToArray()
    }
  };
  
  /**
   * Draw method
   */
  module.draw = function() {
  
    $("#grid").DataTable({
		serverSide: true,
      ajax: function (data, callback, settings) {
      
      	var options = (!data || !data.start)
                      ? settings.oInstance._fnAjaxParameters(data)
                      : data;
                      
        // generate dummy result
				var result = module.getDummyData(options.start, options.length);
        
        
        result.draw = options.draw;
        console.log(options);
        console.log(result);

        callback(result);

      },
      
      columns: [
      	{ title: "Code", name: "Code", data: "Code" },
        { title: "Description", name: "Description", data: "Description" }
      ]

  	});

  };
  
  return module;

}());

// draw grid
app.draw();