我有这段代码
var html = [];
for (var i = 0, len = this.props.tables.length; i < len; i++) {
var id = this.props.tables[i]._id;//._str;
html.push(
<div key={id} className="col-xs-6 col-md-3">
<div className={"thumbnail " + cls}>
<div>
<a role="button" className="btn btn-danger glyphicon glyphicon-trash"
onClick={() => { this.deleteTable(id) } } />
</div>
</div>
</div>);
}
,它呈现一个“表”列表,我正在调用一个删除给定id
的数据的函数。但是,我传递的mt ID最终删除了一个不同的“表”(最后一个,总是),所以我需要以某种方式以某种方式用删除按钮保存id。我该怎么做?
(我曾经通过this.props.tables[i]._id
,但它告诉我this.props.tables[i]
未定义,因为它正在查看最新的i
),
这是与Meteor的反应。
答案 0 :(得分:0)
我通过创建一个新类TableDelete
并将ID作为参数传递来解决它。
所以不是<a\>
我有
<TableDelete key="del" params={this.props.tables[i]._id} />
其中TableDelete
基本上是
/**
* Delete a row from the Tables collection, given its id
* @param id the id of the column
*/
deleteTable(id) {
Meteor.call('tables.removeTable', id);
}
/**
* Display the delete button based on the parameters
*/
render() {
// set the callback depending on the type of delete (row/col)
var callback = this.deleteTable; //row
var title = 'Delete Table';
// display the button
return (
<a role="button" data-toggle="tooltip" title={title}
className={'btn btn-danger glyphicon glyphicon-trash'}
onClick={() => { callback(this.props.params); } } >
</a>
);
}
和参数
/**
* params: parameters to callback function
*/
TableDelete.propTypes = {
params: PropTypes.object.isRequired
};
我仍然不知道为什么会这样,但上面的事情不会......