Skip to content

Instantly share code, notes, and snippets.

@revskill10
Created January 22, 2014 09:25
Show Gist options
  • Save revskill10/8555856 to your computer and use it in GitHub Desktop.
Save revskill10/8555856 to your computer and use it in GitHub Desktop.
Integrate Datatable with React.js
/** @jsx React.DOM */
var LopMonHoc = React.createClass({
getInitialState: function(){
return {data: []}
},
loadData: function(){
$.ajax({
url: '/daotao/lops',
success: function(data){
this.setState({data: data.lops});
}.bind(this)
})
},
componentWillMount: function(){
this.loadData();
},
componentDidMount: function(){
var self = this;
$('#mytable').dataTable({
"sPaginationType": "bootstrap",
"bAutoWidth": false,
"bDestroy": true,
"fnDrawCallback": function() {
self.forceUpdate();
},
});
},
componentDidUpdate: function(){
$('#mytable').dataTable({
"sPaginationType": "bootstrap",
"bAutoWidth": false,
"bDestroy": true,
});
},
render: function(){
var x = this.state.data.map(function(d, index){
return <tr><td>{index+1}</td><td>{d.ma_lop}</td><td>{d.ten_mon_hoc}</td></tr>
});
return (
<div class="table-responsive">
<h4>Hello</h4>
<table class="table table-bordered" id="mytable">
<thead>
<tr class="success">
<td>Stt</td>
<td>Mã lớp</td>
<td>Tên môn học</td>
</tr>
</thead>
<tbody>
{x}
</tbody>
</table>
</div>
)
}
});
@J3K
Copy link

J3K commented Apr 26, 2017

If anyone is having a problem, You should implement render() + shouldComponentUpdate() + componentDidUpdate() + componentWillMount()
componentWillMount() : for Network/API stuff
componentDidUpdate() : You init the DataTable $('#YourTable').DataTable();
shouldComponentUpdate() : return True; (Default)
render() : Render your elements like done above.

Here is a Lifecycle when you execute the App.JS :

WillMount
Render
DidMount
Render
DidUpate

@vijaykotha
Copy link

Hi All

I am using jquery DataTable in React Js and I have written specific code for the rendering of a cell. My code is

var handleView = this.handleClick;
x.mRender = function(obj, data, type, row) {
var i1 = $("");
var i2 = $("");
i1.attr("onclick","handleView();");
i2.attr("onclick","handleView();");
var cellContent = $("

").append(i1).append(i2);

			    	return cellContent.prop('outerHTML');
		 	 
			};

I am not able to trigger onClick on i1 / i2.
It is showing that handleView() is not defined.

Could anyone help me out. I have tried many ways but its not finding that funtion

@LIBINLUVIS
Copy link

What about Functional Components

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment