부모 구성 요소와 다른보기에 구성 요소를 표시하려고했지만 Link
클릭하면 동일한보기, 첫 번째 부모 구성 요소와 바로 아래 자식 구성 요소에 두 구성 요소가 표시됩니다 .
간단한 장바구니 ( /cart
)이며 클릭 Pay
하면 체크 아웃 ( /cart/checkout
)보기 로 리디렉션되어야합니다 . 그럼에도 불구하고 component
바로 아래에 렌더링됩니다.
다른 경로로 설정하려고했지만 해당 경로에 component
CheckoutData
중첩하지 않으면 렌더링되지 않습니다.parent
Cart.js
나는 이것을 달성하고 싶다.
Cart
구성 요소가 렌더링되면 클릭 Pay
Link
하면 CheckoutData
구성 요소 로 리디렉션됩니다 .
Cart.js
class Cart extends Component {
// constructor and state
removeItem(id) {
// Axios call
}
componentDidMount() {
//Axios call
}
render() {
return (
<div>
<ParentNav />
// content table
<Link to="/cart/checkout">
Pay
</Link>
<Link to="/">
Go back
</Link>
</div>
</div>
<Footer />
</div>
);
}
}
CheckoutData.js
class CheckoutData extends Component {
//constructor and state
render () {
return (
<div>
<ParentNav />
<CheckoutForm passToken={this.state.token} />
<Footer />
</div>
)
}
}
마지막으로 Home.js
라우팅이 선언 된 위치
class Home extends React.Component {
render() {
return (
<div>
<HashRouter>
<Switch>
<Route exact path="/">
<App />
</Route>
<Route path="/cart">
<Cart />
<Route path="/cart/checkout" exact component={CheckoutData}/>
</Route>
<Route
path="/product/:id"
children={<SingleProduct />}
/>
</Switch>
</HashRouter>
</div>
);
}
}
메리 크리스마스 여러분!
경로 내에 경로를 중첩했습니다.
<Route path="/cart">
<Cart />
<Route path="/cart/checkout" exact component={CheckoutData}/>
</Route>
경로 경로 "/ cart"는 "/ cart / checkout"을 포함하여 "/ pathXXXXX"경로와 일치하는 접두사입니다. 즉, 경로의 경로에 "/ cart"가 포함되어 있으면 해당 경로가 일치되고 렌더링됩니다. 는 Switch
일치하고 렌더링 첫 경기.
다른 경로로 설정하려고 시도했지만
CheckoutData
부모에 중첩되지 않으면 구성 요소 가 렌더링되지 않습니다Cart.js
.
그 이유 는 경로를 정의한 순서 때문일 수 있습니다. 다음과 같은 작업을 수행 한 경우 :
<Switch>
<Route path="/cart">
<Cart />
</Route>
<Route path="/cart/checkout" exact component={CheckoutData}/>
<Switch>
그런 다음 <Route path="/cart">
나머지 경로가 무엇이든 관계없이 항상 먼저 일치하고 렌더링합니다.
경로를 재정렬하여 덜 구체적인 경로 보다 더 구체적인 경로 를 정의하세요 . 대안은 모든에 소품 을 추가하는 것입니다 . 이는 매우 건조 하지는 않지만 지루하고 평범합니다.exact
Route
<Switch>
<Route
path="/cart/checkout" // <-- more specific path
component={CheckoutData}/>
<Route path="/cart"> // <-- less specific path
<Cart />
</Route>
<Route
path="/product/:id"
children={<SingleProduct />}
/>
<Route path="/">
<App />
</Route>
</Switch>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다