React.js表格行按钮单击不起作用

时间:2019-03-04 14:37:51

标签: reactjs

为什么在下面的代码Delete中,单击按钮不会触发delete方法?我缺少什么重要的东西?我是新来学习React.js

delete(e) {
    console.log('Deleted');
}

static renderCatTable(Categories) {
    return (
        <table className='table table-striped'>
            <thead>
                <tr>
                    <th>Code</th>
                    <th></th>

                </tr>
            </thead>
            <tbody>
                {Categories.map(category =>
                    <tr key={category._id}>
                        <td>{category.code}</td>
                        <td><button onClick={this.delete} className="btn btn-danger">Delete</button></td>                        
                    </tr>

                )}
            </tbody>
        </table>
    );
}

我已经在构造函数中定义了绑定

this.delete = this.delete.bind(this);

渲染功能如下。

render() {
    let contents = this.state.loading
        ? <p><em>Loading...</em></p>
        : Category.renderCatTable(this.state.Categories);
    return (
        <div>         
            {contents}
        </div>
    );
}

1 个答案:

答案 0 :(得分:2)

因为渲染方法是static。根据定义,static方法无法访问实例变量。如果可能,您应该删除该修饰符,并且该修饰符应该起作用。