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)} />
을 그리고 함수에서 그들을 검색 :
나는 이미했고, 그것을 작동합니다. 이것이 갈 길인 경우 나는 궁금해하고 있었다. 좀 이상하게 보입니다. :-) – bitwikinger
정적 함수 내에서 작성된 구성 요소의 다른 모든 컨텍스트가 손실됩니다. 정적 함수 및 기타 구성 요소 함수에 액세스해야하는 구성 요소 내에 함수가 있다고 가정 해 봅시다. "this"에 대한 액세스 권한이 없기 때문에 정적 함수 내에서 해당 함수에 액세스 할 수 없습니다. 그래서이 함수를 소포를 통과 시켜서 소스로 가져와야합니다 ... 주제 항목을 업데이트하여 명확하게 만듭니다. 의미는 무엇입니까? – bitwikinger
그 상황에서 어떻게 끝날 지 확신하지 못합니다. 클래스의 상태에 액세스하려면 정적 함수가 원하는 것이 아닙니다. 사이드 바를 자체적으로 구성 요소로 만들고 그 내용을 전체적으로 소액 국가 (소품을 통해)로 가져와야합니다. – klugjo