2017-01-07 4 views
2

다음 ES6 구문을 이해하는 데 어려움이 있습니다. 나는 워드 프로세서에게 꽤 읽고 더 이상의 변화는 여기에서 일어나고있다처럼 보인다 :ES6 괄호없는 화살표 기능

const renderInput = function renderInput(props) { 
    return <div> 
      <label>{props.placeholder}</label> 
     </div> 
} 

:

const renderInput = props => 
    <div> 
    <label>{props.placeholder}</label> 
    </div> 

위는 동등겠습니까?

+5

ES6이 아닙니다. JSX 일 수 있습니다. – Quentin

+0

예, HTML을 백틱으로 묶어야합니다. 그리고 문자열 매개 변수는 앞에'$'가 필요합니다 ... $ {param}' – Mottie

+0

@Mottie 예 그것은 동일합니까? – softcode

답변

1

네, 맞습니다. 표현식이 인 경우 함수에서 반환하려는 표현식은 중괄호를 생략 할 수 있습니다.

<div><label>{props.placeholder}</label></div> 때문에, 사실, 하나의 표현 (가 React.createElement(......) 또는 그런 일에 transpiled됩니다), 당신은 renderInput에서 반환하고자하는, 즉 당신이 화살표 함수의 노 브라켓 버전을 사용하는 방법을 참 .

변수를 사용하거나 다른 계산 (조건, for 루프 등)을 수행하려는 경우 대괄호를 생략 할 수 없었을 것입니다.

+0

그래서 실제로'render renderInput = function renderInput (props)','renderInput'을 두 번 반복합니까? – softcode

+0

어쨌든 재귀에서 해당 함수 이름 만 사용할 수 있습니다. 어쨌든 함수에 이름이 없다면 브라우저의 devtools는'const'의 이름을 할당 할 것이므로 두 함수는 거의 같습니다. 엄밀히 말하면 const renderInput = function (props) {'function renderInput (props)'이 아닌 것과 같습니다. –

+0

@softcode : [이름 지정된 함수 식 demystified] (https://kangax.github.io/nfe/) –

관련 문제