【发布时间】:2019-06-15 19:00:53
【问题描述】:
我刚刚开始学习 react,马上就遇到了绑定问题。
我总是得到“无法读取未定义的属性'onDismiss'”-错误,我不知道如何解决这个问题。尝试了多种方法来正确绑定“this”,但没有任何效果。
这是我的应用组件的完整代码:
import React, { Component } from 'react';
import './App.css';
const list = [
{
title: 'React',
url: 'https://reactjs.org/',
author: 'Jordan Walke',
num_comments: 3,
points: 4,
objectID: 0,
},
{
title: 'Redux',
url: 'https://redux.js.org/',
author: 'Dan Abramov',
num_comments: 2,
points: 5,
objectID: 1,
},
{
title: 'Reddit',
url: 'https://reddit.com/',
author: 'Crazy Guys',
num_comments: 2000,
points: 3,
objectID: 2,
},
];
class App extends Component {
constructor(props) {
super(props);
this.state = {
list: list,
list_title: 'Links',
};
this.onDismiss = this.onDismiss.bind(this);
}
onDismiss(id) {
console.log(id)
//const isNotId = item => item.objectID !== id;
//const updateList = this.state.list.filter(isNotId);
}
render() {
return (
<div className="App">
<h2>{this.state.list_title}</h2>
{this.state.list.map(function(item) {
return (
<div key={item.objectID}>
<span>
<a href={item.url}>{item.title}</a>
</span>
<span>
{item.author}
</span>
<span>
{item.num_comments}
</span>
<span>
{item.points}
</span>
<span>
<button
onClick={() =>
this.onDismiss(item.objectID)}
type="button"
>
Dismiss
</button>
</span>
</div>
);
})}
</div>
);
}
}
export default App;
【问题讨论】:
-
您的地图函数回调没有绑定。请检查重复的帖子
-
只需将地图内的函数更改为箭头函数。
{this.state.list.map((item) => { ....... }
标签: reactjs binding create-react-app