아래 코드는 제 코드입니다. 내 onClick이 작동하지 않습니다. 그것은 항상 "Uncaught TypeError : 정의되지 않은"likeQuestion '속성을 읽을 수 없습니다. 하지만 내 "gotoPage"기능이 작동 중입니다. 나는 내가 어디 잘못되었는지 모른다. 나는 Reactjs에서 아주 새롭다. "likeQuestion"기능이 인식되지 않는 이유는 무엇입니까? onClick in reactjs not working
나의 첫번째 온 클릭
은 반작용 구성 요소의constructor
에
arrow
기능
gotoPage = (index) => {
//some action. This is working
}
toggle =() => {
this.setState({
dropdownOpen: !this.state.dropdownOpen
});
}
likeQuestion = (e) => {
console.log('this is clicked');
//But this is not working
}
또는
바인딩이 방법을 사용하여 도우미 함수를 정의하는
export default class Question extends React.Component {
constructor(){
super();
this.toggle = this.toggle.bind(this);
this.state = {
pageNo : 1,
dropdownOpen: false,
questioninfo : []
}
}
componentWillMount(){
//some action
}
gotoPage(index) {
//some action. This is working
}
toggle() {
this.setState({
dropdownOpen: !this.state.dropdownOpen
});
}
likeQuestion(e){
console.log('this is clicked');
//But this is not working
}
render() {
var canvases = this.state.questionItem.map(function(data,i) {
var firstLtr = data.user_name.charAt(0);
return (
<div key={i}>
<Col sm="12" md={{ size: 12, offset: 2 }} className="questionCard">
<Card block>
<CardTitle>
<div className="outerCircle"><span>{firstLtr}</span></div> {data.user_name}
<i className="fa fa-flag-o flagging" aria-hidden="true"></i>
<a href={data.location_url} target="_blank" className="questionLocation">{data.location_url}</a>
</CardTitle>
<CardText className="questionTxt">{data.message}</CardText>
<div>
<Button className="replyBtn" disabled>No Discussion</Button>
<Button size="sm" color="link" className="disussionSpan" onClick={(i) => this.likeQuestion(i)}>{data.likes} Likes</Button>
</div>
</Card>
</Col>
</div>
);
});
return(
<div className="container">
<div className="row">
<div className="pageInfo">
<Dropdown className="inline" isOpen={this.state.dropdownOpen} toggle={this.toggle}>
<DropdownToggle caret>
Pages
</DropdownToggle>
<DropdownMenu>
{pgrow}
</DropdownMenu>
</Dropdown>
<p className="inline currPgNo">Page: {currentPage}</p>
</div>
<div className="col-md-8 col-md-offset-2">
{canvases}
</div>
</div>
</div>
)
}
이것을 추가해 주셔서 감사합니다. 왜 그것이 효과가 있었는지 설명해 주시겠습니까? – Sidhemu
React는 render() 내에서 자동으로 맵 메서드를 자동 바인드하지 않으므로 직접 수행해야합니다. – lustoykov
ok. 고맙습니다. @leo – Sidhemu