Gett访问React中的方法

时间:2017-01-20 11:37:33

标签: reactjs

我仍然点击按钮Form.js:232 Uncaught TypeError:无法读取属性'removeTrash'的null

  removeTrash(index) {
        console.log('remove', index);
    }



    <tbody>
                                    {this.state.trashArray.map(function (data, index) {
                                        return <tr>
                                            <th scope="row" key={data.key}>{index + 1}</th>
                                            <td>{data.odpad}</td>
                                            <td>{data.waga}</td>
                                            <td>
                                                <button type="button" value="add" className="btn btn-danger btn-remove"
                                                        onClick={function (data, index) {
                                                            console.log(data);
                                                            this.removeTrash(index);
                                                        }}>X
                                                </button>
                                            </td>
                                        </tr>;
                                    })
                                    }
                                    </tbody>

2 个答案:

答案 0 :(得分:1)

console.log(data);
this.removeTrash(index);

这里this引用包含它的函数而不是类!

为了解决这个问题,在返回<tbody> ...</tbody>之前添加此行替换它,

let that = this

然后

that.removeTrash(index);

答案 1 :(得分:0)

它是一个绑定问题,你需要绑定onClick方法。试试这个:

<button type="button" value="add" className="btn btn-danger btn-remove"
        onClick={()=>{this.removeTrash(index)}}
</button>

<button type="button" value="add" className="btn btn-danger btn-remove"
     onClick={this.removeTrash.bind(this,index)}
</button>

并使用这部分:

{this.state.trashArray.map((data, index)=> {
    return 
        <tr>
            <th scope="row" key={data.key}>{index + 1}</th>
            <td>{data.odpad}</td>
            <td>{data.waga}</td>
            <td>
                <button type="button" value="add" className="btn btn-danger btn-remove"
                        onClick={this.removeTrash.bind(this, index)}>
                    X
                </button>
            </td>
        </tr>;
    })
}