我以这种方式重新渲染 jqmobile 表并且所有工作:
var List = React.createClass({
componentDidMount:function(){
$(".list-box-app-list").table();
},
componentDidUpdate:function(){
$(".list-box-app-list").table();
},
render: function() {
var allListItems = this.props.allListItems;
var listItems = [];
for (var key in allListItems) {
listItems.push(<ListItem key={key} list_item={allListItems[key]} />);
}
return (
<table data-role="table" data-mode="columntoggle" className="ui-responsive list-box-app-list">
<thead>
<tr>
<th data-priority="2">Id</th>
<th>Author</th>
<th data-priority="1">Text</th>
</tr>
</thead>
<tbody>
{listItems}
</tbody>
</table>
);
}
});
示例在这里:https://eugen35@bitbucket.org/eugen35/flux-todomvc.git
分支:listAndJQMobile
npm install
npm run watch // create bundle.js
npm start // run server.js
有没有办法更优化地做到这一点?
因为我的例子我认为这样工作:1)(重新)在DOM中渲染JSX,2)用.table()初始化JQMobile-table;早些时候我猜想,reactDOM 只会更新我的表中的一些新行,我不必重新初始化 JQM 表。但这不起作用。每次更新后可能会在 DOM 整个表中重新呈现 reactjs。从那我需要将它重新初始化为 JQM 表。
我做错了什么?