如何将当前ID传递给数据删除做出反应?

时间:2016-12-20 03:22:08

标签: javascript reactjs meteor

我有这段代码

    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的反应。

1 个答案:

答案 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
};

我仍然不知道为什么会这样,但上面的事情不会......