【发布时间】:2016-07-27 03:28:48
【问题描述】:
我将 jQuery 与 ReactJS 一起用于几件事。我注意到 $(selector) 在 React 中与直接在浏览器控制台中执行时的输出不同。
由于这个原因,我直接在浏览器控制台中执行的某些 javascript 代码可以工作,但是当我在 React 中编写它时它就不起作用了。
例如我有这个表:
render(){
console.log(this.state.data);
return (
<Table striped bordered condensed hover id="files-table">
<thead>
<tr>
<th>stuff</th>
</tr>
</thead>
<tbody>
<tr>
<td>stuff</td>
</tr>
</tbody>
</Table>
);
}
一方面,当我在 React 中执行 console.log($('#files-table')) 时,假设在 componentDidUpdate() 钩子中,我在控制台中看到以下输出:
...另一方面,直接在浏览器控制台中输入的相同控制台语句会显示此输出(这是我所期望的):
有人能解释一下不同之处吗?
我在实现 jQuery DataTables 时遇到问题,因为将 $('#files-table').DataTable() 放入 React componentDidUpdate() 钩子会出现错误:$(...).DataTable is not a function 虽然它有效在浏览器中(我知道这个错误可能是由于两次加载 jQuery 等引起的,但我认为这里不是这种情况)。
【问题讨论】:
-
JQuery 和 React 不能混用。
-
你知道 React 有什么好的 DataTables 替代品吗?还有几个人似乎成功地结合了两种技术的使用。
-
我看到了,但我想使用 DataTables,因为它有更多功能并且有很多功能,比如自动客户端分页、排序等。React 还支持使用 jQuery 的 Ajax,是吗说明你不应该在 React 中使用 jQuery?我不明白为什么 componentDidUpdate 会有任何问题,因为那是在所有虚拟 dom 内容都刷新到浏览器 DOM 之后。
标签: javascript jquery reactjs datatables