我在父子组件之间传递回调函数时遇到问题。我的孩子部分是数字列表。我正在尝试创建一个分页组件。单击列表编号-TypeError时,Pages.js组件中出现错误消息:undefined没有属性 下面是我的代码,在此先感谢。 App.js
class App extends Component {
state = {
CurrentPage: 1,
Items: []
}
handlePageClick = (event) => {
this.setState({
currentPage: Number(event.target.id)
});
}
render() {
const pageNumbers = 10;
return ( <
Pages pageNumbers = {
pageNumbers
}
onClick = {
this.handlePageClick
}
/>
);
}
}
Pages.js
import React from 'react';
const Pages = ({
pageNumbers,
handlePageClick
}) => {
return (
pageNumbers.map(number => < li key = {
number
}
id = {
number
}
onClick = {
() => this.handlePageClick(number)
} > {
number
} <
/li>)
);
}
}
export default Pages;
答案 0 :(得分:5)
首先使用this
是一个保留关键字,只能在类组件中使用。其次,您要在Pages组件中传递onClick
属性。因此,<li>
标记应调用onClick
而不是this.handlePageClick
。
下面的代码应该可以正常工作,而无需更改App组件中的任何内容。
const Pages = ({
pageNumbers,
onClick
}) => {
return (
pageNumbers.map(number =>
<li key={number}
id={number}
onClick={onClick}
</li>)
);
}
}
答案 1 :(得分:0)
您所要做的只是删除arg事件,而仅将状态设置为获得的num。
handlePageClick=(num)=> {
this.setState({
currentPage: Number(num)
});