Jquery 如何更新Datatable中的行数据?

Jquery 如何更新Datatable中的行数据?,jquery,reactjs,datatable,Jquery,Reactjs,Datatable,我正在尝试更新我的React应用程序中使用的Datatable中的一行 我将Datatable对象以及在React组件状态下保存的选定行保存为this.state.myTable和this.state.selected 我最初是这样保存Datatable对象的: var myTable = $('#myTable').DataTable({ ... }); this.setState({ myTable: myTable }); 我在“行单击”事件中保存所选行,如下所示: $('#myTab

我正在尝试更新我的React应用程序中使用的Datatable中的一行

我将Datatable对象以及在React组件状态下保存的选定行保存为
this.state.myTable
this.state.selected

我最初是这样保存Datatable对象的:

var myTable = $('#myTable').DataTable({ ... });

this.setState({ myTable: myTable });
我在“行单击”事件中保存所选行,如下所示:

$('#myTable tbody').on('click', 'tr', function () {
    $(this).toggleClass('selected');
}).on('click', 'tr', function () {
    this.setState({ selected: this.state.myTable.rows('.selected') });
}.bind(this));
我更新数据(根据)如下:

但是新数据不会反映在我的Datatable中,除非我更新了其他行(但是只有这一行被更新,而不是那一行被更新)


我在这里做错了什么?

每当状态发生
更改时,您的视图将
重新渲染。因此,在更新值时,只需使用setState,而不是直接改变状态

function (newValue) {
    var dataType = {...this.state.selected};
    var data = dataType.row().data();
    data.someValue = newValue
    dataType.row().data(data).draw();
    this.setState({selected: dataType});
},
$(文档).ready(函数(){
$('#dataTable')。在('click','update',函数(){
var tableRow=$('#dataTable')。行($(this.parents('tr'));
变量rData=[
测试1,
测试1,
'',
''
];
$(“#数据表”)
.行(tableRow)
.数据(rData)
.draw();
});
});
您可以使用此代码,它在我们的项目中起作用

function (newValue) {
    var dataType = {...this.state.selected};
    var data = dataType.row().data();
    data.someValue = newValue
    dataType.row().data(data).draw();
    this.setState({selected: dataType});
},
$(document).ready(function () {
   $('#dataTable').on('click', '.update', function () {
        var tableRow = $('#dataTable').row($(this).parents('tr'));
        var rData = [
            test1,
            test1,
            '<a href="#" data-href="' + response.result[0].id + '" class="update">Update</a>',
            '<a href="#" data-href="' + response.result[0].id + '" class="delete">Delete</a>'
        ];
        $('#dataTable')
                .row( tableRow )
                .data(rData)
                .draw();
    });
});