2017-11-13 5 views
1

사이드 바를 포함하여 전체 웹 사이트 레이아웃을 제공하는 상위 구성 요소가 있습니다. 이 사이드 바에는 구성 요소에서 제공하는 일부 정적 요소 (예 : 로고, 홈 버튼, 임프린트 및 면책 조항)와 일부 동적 인 내용이 포함되어 있습니다.ReactJS : 구성 요소의 정적 기능으로 소품 만들기

const HtmlSkeleton = (ComposedComponent) => { 
    class Wrapper extends Component { 
     [...] 
     render() { 
      return (
       <div> 
        <Sidebar content={ComposedComponent.getSidebarContent()} /> 
        <Header /> 
        <Content> 
         <ComposedComponent {...this.props} /> 
        </Content> 
        </Footer /> 
       </div> 
      ) 
     } 
    } 

    return connect(...)(Wrapper) 
} 

그러면 그 HOC 의해 구성된다 일부보기/용기 가지고

class View extends Component { 
    static getSidebarContent =() => { 
     // how to access someFunction?!? 

     return [...some stuff depending on props. How do I have access?] 
    } 
    constructor(props) { 
      [....] 
    } 
    [...] 
    someFunction =() => { [....] } 
    render() { 
     this.someFunction() 
     [...] 
    } 
} 
export default connect(....)(HtmlSkeleton(View)) 

(연결 인 반응-REDUX하지만 경우에 중요하지 않음)에서

아니면 내가 볼 수없는 일종의 구성 요소로 레이아웃을 유지할 다른 가능성이 있습니까? 기본 HTML은 어디에 보관합니까? 저는 react-router, react-redux 및 redux-saga를 사용하고 있습니다.

<Sidebar content={ComposedComponent.getSidebarContent(this.props)} /> 

을 그리고 함수에서 그들을 검색 :

답변

1

당신은 직접 getSidebarContent에 소품을 통과 할 수

class View extends Component { 
    static getSidebarContent = (props) => { 
     return ... 
    } 
    [...] 
} 
+0

나는 이미했고, 그것을 작동합니다. 이것이 갈 길인 경우 나는 궁금해하고 있었다. 좀 이상하게 보입니다. :-) – bitwikinger

+0

정적 함수 내에서 작성된 구성 요소의 다른 모든 컨텍스트가 손실됩니다. 정적 함수 및 기타 구성 요소 함수에 액세스해야하는 구성 요소 내에 함수가 있다고 가정 해 봅시다. "this"에 대한 액세스 권한이 없기 때문에 정적 함수 내에서 해당 함수에 액세스 할 수 없습니다. 그래서이 함수를 소포를 통과 시켜서 소스로 가져와야합니다 ... 주제 항목을 업데이트하여 명확하게 만듭니다. 의미는 무엇입니까? – bitwikinger

+0

그 상황에서 어떻게 끝날 지 확신하지 못합니다. 클래스의 상태에 액세스하려면 정적 함수가 원하는 것이 아닙니다. 사이드 바를 자체적으로 구성 요소로 만들고 그 내용을 전체적으로 소액 국가 (소품을 통해)로 가져와야합니다. – klugjo

관련 문제