2017-09-26 20 views
0

나는 다음과 같은 포함하는 반작용 구성 요소의 onClick 소품을 가지고 : Lodash의 _.bind에 해당하는 바닐라 자바 ​​스크립트는 무엇입니까?

onClick={_.bind(this.callMe, this, argToPass)} 

이 명심,이 React.createClass를 사용하는 반작용 구성 요소, 그래서 그것의에 구성 요소의 기능을 결합한다 문맥. 불행하게도

, 나는 다음을 수행하여이 바인딩을 시도 :

onClick={this.callMe(argToPass)} 

그것은 내 테스트 중 하나 나옵니다.

나는 그것이 같은 소품으로 전달 된 것으로 바인딩하지 않으 : 성능 문제의

onClick={this.callMe(argToPass).bind(this)} 

B/C. 함수가 제대로 결합 할 수

_.bind(this.callMe, this, argToPass) 

:

은 바닐라의 자바 스크립트 상응하는 무엇입니까.

감사합니다.

+0

Dude. 누가 설명없이 downvote? 이는 환상적인 팀에서의 제작 과정에서 진정한 의문입니다. –

+0

_ 나는 그것을 묶고 싶지 않습니다 :'this.callMe (argToPass) .bind (this)'성능 문제의 b/c. - 그게 정확하지 않기 때문에? 왜냐하면'this.callMe()'가 함수를 반환하지 않는다면 에러를 던지기 때문에, 그렇다고해도 여전히 버그가있을 것입니다. ** 알림 ** 나는 downvoted하지 않았습니다, 나는 단지 코멘트입니다. –

+0

성능 문제가 있으며 해당 표기법을 사용하여 해당 구성 요소의 컨텍스트에 함수를 바인딩하지 않으려합니다. Ref : https://daveceddia.com/avoid-bind-when-passing-props/ –

답변

4

JS 상응 Function#bind이다 BTW

this.callMe.bind(this, argToPass) 

- I는 렌더링 단계에서 소품의 기능을 결합 피하고 제안. 그것에 대해 자세히 알아보십시오 Why shouldn't JSX props use arrow functions or bind?

+0

onClick에서 바인딩하고 싶지 않습니다. 이것은 this.callMe (argToPass) .bind (this)와 동일합니까? –

+0

@zero_cool 아니요 동일하지 않습니다. 내 의견보기. –

+1

당신은'_.bind()'와 같은 것을 요구했고, # Function bind가 있습니다. 반응의 바인딩은 다른 주제이고, 내가 답을 추가 한 링크를 확인해야합니다. –

0
onClick = {() => this.callMe(arrtopass)} 

시도해보십시오. es6 sentax.

+0

주사위가 없습니다. 테스트가 중단되었지만 피드백에 감사드립니다. –

0
import partial from 'lodash/partial' 

// bind using Function.bind 
onClick={partial(this.callMe.bind(this), argToPass)} 

// when binded in constructor or using arrow function 
onClick={partial(this.callMe, argToPass)} 
+0

이 코드 단편은 솔루션 일 수 있지만 [설명 포함] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-base- answers) 정말 게시물의 품질을 향상시키는 데 도움이됩니다. 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. –