구성 요소 트리의 다른 곳에 배치 된 자리 표시 자에서 React 구성 요소를 렌더링하십시오.
yarn add react-tunnels
React 앱에는 일부 요소의 내용이 children 구성 요소에 의해 정의되는 Layout 정의하려는 공통 사용 사례가 있습니다. 예를 들어, Layout 한 번만 정의하고 모든 페이지에 대해 재사용하려고하지만 children 구성 요소에 의존하는 빵 부스러기가 있습니다. 이 작은 라이브러리를 사용하면 터널을 정의하여 요소에서 앱의 다른 요소, 트리 위에있는 요소까지 렌더링 할 수 있습니다. Portal 과 같지만 대상은 DOM 요소 대신 구성 요소 입니다.
id 로 식별 된 TunnelPlaceholder 정의하고 앱의 다른 곳에서 동일한 ID 로 Tunnel 구성 요소를 정의하여 render 기능으로 전달 될 속성을 결정하십시오. 단일 Tunnel 만 정의하면 소품이 render 함수로 바로 전달됩니다. 단일 id 에 대해 두 개 이상의 Tunnel 있으면 자리 표시 자 render 함수는 각 Tunnel 에 대한 props 포함하는 item 인 항목 인수를받습니다. 몇 가지 예를 봅시다.
렌더링 기능없이 자리 표시자를 정의하여 동일한 ID가있는 Tunnel 구성 요소에서 나오는 어린이를 렌더링합니다.
import { TunnelProvider , TunnelPlaceholder , Tunnel } from 'react-tunnels'
render (
< TunnelProvider >
< div >
< TunnelPlaceholder id = "my-tunnel" />
< Tunnel id = "my-tunnel" >
This will be rendered on the placeholder ?
</ Tunnel >
</ div >
</ TunnelProvider >
)여기에서 실제 예를 확인하십시오
TunnelPlaceholder 의 소품 multiple 사용하여 Breadcrumb을 쉽게 만들 수 있습니다. 이를 통해 여러 터널이 있으므로 render 함수가 다양한 소품으로 호출 될 수 있음을 알 수 있습니다.
const Breadcrumbs = ( ) => (
< TunnelPlaceholder id = "breadcrumb" multiple >
{ ( { items } ) => (
items . map ( ( { children , href } ) => (
< span > < a href = { href } > { children } </ a > </ span >
) )
) }
</ TunnelPlaceholder >
)
const Breadcrumb = ( { children , url } ) => (
< Tunnel id = "breadcrumb" href = { url } >
{ children }
</ Tunnel >
)
render (
< TunnelProvider >
{ /* This will render the breadcrumb */ }
< Breadcrumbs />
{ /* Somewhere else in children */ }
< Breadcrumb url = "/products" > Products </ Breadcrumb >
< Breadcrumb url = "/products/123" > Product < strong > 123 </ strong > </ Breadcrumb >
</ TunnelProvider >
)여기에서 라이브 예제를 확인하십시오
이 프로젝트는 Javi Velasco에 의해 다양한 React 프로젝트를위한 Breadcrumb 구성 요소 및 Layout 사용자 정의를 구축하는 방법으로 개발되었습니다. 모든 요금, 도움 또는 개선은 높이 평가됩니다.
이 프로젝트는 MIT 라이센스의 조건에 따라 라이센스가 부여됩니다.