링크는 두 개의 서로 다른 전략을 설명합니다. 첫째, 동적 세그먼트는 매개 변수화 된 URL 일 뿐이며 매개 변수는 쿼리 문자열 대신 URL 경로의 일부로 전송됩니다. 그래서 이것들은 공개적으로 보일 필요가 있습니다.
둘째, 소품을 사용할 수 있습니다. 이는 상황을 "뒤에서"전달하는 유일한 지원 옵션입니다. 또한 React에서 선호하는 방법입니다. 문제는 이것이 어디에서 일어날 수 있는가하는 것입니다.
하나의 옵션은 최상위 레벨의 값을 Router.run()
에서 전달하는 것입니다. 위의 링크에서 중첩 된 각 핸들러는 <RouteHandler search={this.props.search} />
과 같이 명시 적으로 소문자를 전달하거나 <RouteHandler {...props} />
과 같은 spread attributes을 사용하여 도매합니다.
페이지의 하위 집합에서만 발생하기 때문에 중첩 된 경로를 사용할 수 있습니다. 상위 경로 처리기는 문제의 속성을 상태의 일부로 소유합니다. 그런 다음 위의 경우와 같은 방식으로 정상적인 소품으로 모든 어린이에게 전달합니다.
예를 들어, 경로지도는 다음과 같습니다
<Route name="app" path="/" handler={App}>
<Route name="realestates" handler={RealEstatesPage}/>
<Route name="realestatesPrefiltered" handler={RealEstatePrefiltered}>
<Route name="homes" handler={RealEstateHouseDetails}/>
<Route name="apartments" handler={RealEstateHouseDetails}/>
<Route name="land" handler={RealEstateLandDetails}/>
</Route>
<Route name="realestate" handler={RealEstateDetails}/>
<DefaultRoute handler={MainPage}/>
</Route>
를 그런 다음 RealEstatePrefiltered 구성 요소는 다음과 같습니다
RealEstatePrefiltered = React.createClass({
getInitialState: function() {
return { search: '', type: '' }; // Update from store or event.
},
render: function() {
return <div>
<RouteHandler search={this.state.search} type={this.state.type} />
</div>;
}
});
이 유일한 질문 왼쪽, 당신은 상태를 어떻게 변경합니까된다 이 구성 요소에? Flux 저장소를 사용하여이 작업을 수행하거나 전역 이벤트를 설정하고이 구성 요소가 변경 사항을 감시하도록 할 수 있습니다.
경로를 정의하는 방법 및 위치 (예 : '')? 링크를 jsfiddle 또는 jsbin에 공유하십시오. –
rxgx
특정 경로에만 전달해야합니까? 그렇지 않다면 어쩌면 그 값들을 일종의 응용 프로그램 상태로 저장할 수 있습니까? –
@rxgx 루트를 사용하여 게시물을 편집했습니다. –