2017-05-08 1 views
1

안녕하세요, 저는 React 앱에서 es6 arrow function에 값을 전달하려했지만 성공하지 못했습니다. 여기에 내가 GetData의에 대한es6 arrow function, React app에서 param 값을 가져 오지 않았습니다.

var data = []; 
for (var i=1; i<=5; i++) { 
    data.push(<li><a href="#" onClick={(e) => this.getData(e, i)} >{i}</a></li>); 
} 

코드입니다 뭐하는 거지입니다

getData (e, page){ 
e.preventDefault(); 
//here I am calling an api to get data as per page params 
} 

실제로 클릭이 내가 아무것도 얻을 발생합니다. 어떤 도움이라도!

+1

는 괄호 제거 -'의 onclick = (E) => this.getTicketsPage (예, 나는)' – Weedoze

+1

화살표 기능과'this'를? 화살표 함수는'this' 바인딩을 가지고 있지 않습니다. 'this'는 먼저 비 화살표 함수를 포함하는 문맥이 될 것입니다. – Tushar

+0

예, 괄호없이 시도하십시오. http://exploringjs.com/es6/ch_arrow-functions.html – Jankapunkt

답변

2

이 코드를 테스트했습니다. 괜찮아요 - getData 메소드는 링크를 클릭 할 때 호출됩니다.

i param 값을 얻으려면 var에서 let으로 변경하면됩니다.

var data = []; 
for (let i=1; i<=5; i++) { 
    data.push(<li><a href="#" onClick={(e) => this.getData(e, i)} >{i}</a></li>); 
} 
+0

아무것도 변경하면 안됩니다. let과 var는 기본적으로 동일합니다. 또한 나는 'var'과'let'을 같이 사용하는 것이 좋지 않다고 생각한다. – gisderdube

+0

@gisderdube var와 다른 범위를 갖도록하라. –

+0

사실이지만이 문맥에서 나는 그것이 어디에서 차이가 나는지를 보지 못한다. – gisderdube

1

이 시도 :

여기
var data = []; 
for (var i=1; i<=5; i++) { 
    data.push(<li><a href="#" onClick={this.getData.bind(this, i)}>{i} 
    </a></li>); 
} 

가 작동 예입니다 그런데 http://jsbin.com/lokafas/edit?html,js,console,output

, 나는 또한 당신이 어쨌든 ES6 구문을 사용할 때 letconst를 사용하는 것이 좋습니다.

+0

did not worked ... –

+0

흠 ... 전체 수업을 제공해 주시겠습니까? React.createClass() 또는 ES6 클래스를 사용하고 있습니까? getData에서 args를 로깅하고 결과를 제공하십시오. – gisderdube

1

당신은 당신의 코드가 작동하기 위해서는 어딘가 this을 결합해야합니다. 가장 좋은 방법은 생성자에서 그것을 할 수 있습니다 :

export default class SomeCoolName extends React.Component { 

    constructor() { 
     super(); 
     this.getData = this.getData.bind(this); // this is important! 
    } 

    getData(e, page) { 
     // code 
    } 


    // somewhere in the code, in render() maybe 
    var data = []; 
    for (var i=1; i<=5; i++) { 
     data.push(<li><a href="#" onClick={(e) => this.getData(e, i)} >{i}</a></li>); 
    } 

} 
+0

여전히 잘못된 값을 받고 있습니다. –

+0

거기에 매개 변수 'onClick = {this.getData.bind (this, i)}'와 함께 e를 전달하는 방법입니다. getData 함수 내에서 올바른 값을 얻고 있습니다. –

+0

그러나 e를 전달할 수 없습니다. –

관련 문제