Meteor:sortablejs方法不被调用

我有一个组件,当简化看起来像这样:

import Sortable from 'react-sortablejs'; class App extends Component { constructor(props) { super(props); } updateItemOrder() { let items = this.props.items; items.forEach((item, index) => { console.log(item._id); console.log(index); updateItem.call({ _id: item._id, update: { priority: index } }); }); }; render() { <Sortable tag='ul' className='item-list list-group' onChange={ this.updateItemOrder() }> { this.renderItems() } </Sortable> } } 

我的控制台在页面加载时列出了item._idindex ,但是当我将这些项目拖放到我的可sorting列表中时没有任何反应。 更改为<ReactSortable>组件也无济于事(按照文档 )。

从上面的代码中具体的这个部分来看,

 updateItemOrder() { let items = this.props.items; items.forEach((item, index) => { console.log(item._id); console.log(index); updateItem.call({ _id: item._id, update: { priority: index } }); }); }; 

看起来你试图改变道具,这是一个没有反应的道具。 要导致重新渲染的反应,你需要更新状态,并告诉反应这种变化是状态应该导致重新渲染。 这是使用setState完成的。 有两个选项让人想起了蝙蝠的权利。 首先,您可以捕获您的道具在本地组件的本地状态并更新,或者您可以调用父组件的方法来更新其状态,迫使它重新渲染。