2017-12-20 1 views
-1

JS의 오브젝트 파괴와 관련하여 질문이 있습니다. 아래의 코드에서 컴포넌트 레이아웃에는 값 레이아웃 (소문자 포함)이 할당되었다고 가정합니다. 그러나 레이아웃의 가치는 정의되지 않고 레이아웃이 사용됩니다.RE6 컴포넌트를 사용한 ES6 오브젝트 파괴 설명

const MustBeAuthenticated = ({ layout: Layout, ...rest }) => { 
    if (!isAuthenticated()) { 
    return redirectToLogin({...rest}) 
    } 
    return (
    <Layout {...rest} /> 
) 
} 

({ Layout, ...rest })을 사용하여 구성 요소를 추출하려고했지만 다시 정의되지 않은 오류가 발생합니다. 내가 뭔가를 오해하고있다면 나는 약간의 설명을 원했다.

+0

없음 당신은 실제로 잘되지 않습니다. 그러나'{... rest}'을 할 때 감각을 보지 못한다.'rest'는 충분할 것이다. –

+0

'... rest'는'Layout'이 아닌 에러를 던지고있다. 어느 쪽이 맞을 까? –

+0

내 주요 질문 같아. '{layout : Layout} '에 관한 것이고,'layout'은 접근이 가능하고'Layout'은 아닌 것으로 가정합니다. 이 자본화의 원인이되는 장면 뒤에 마법의 반응이 나타나나요? – William

답변

1
function logmsg({logMessage: LogMessage, ...rest}) { 
    console.log(LogMessage); // prints 'hi' 
    console.log(rest); // prints {bye: 'bye'} 
} 

logmsg({logMessage: 'hi', bye: 'bye'}); 

처럼 당신에게 무언가를 줄 것이다.

0

React API에서 cloneElement을 사용하려고한다고 생각합니다. 레이아웃에 변수가 저장되어 있습니다. 반환하려는 경우 레이아웃 구성 요소가 아닌 레이아웃 요소를 사용해야합니다. 이 같은

뭔가 :

const MustBeAuthenticated = ({layout, ...rest}) => { 
    if (!isAuthenticated()) { 
    return redirectToLogin({...rest}) 
    } 
    return (
    React.cloneElement(
     layout, 
     rest, 
    ) 
) 
} 

이 제대로 작동이

<element.type {...element.props} {...props}>{children}</element.type> 
관련 문제