ฉันคิดว่าผู้เขียนของ React Router (v4) เพิ่งเสริมด้วย Router HOC เพื่อเอาใจผู้ใช้บางคน อย่างไรก็ตามฉันเชื่อว่าวิธีที่ดีกว่าคือการใช้ render prop และสร้างส่วนประกอบ PropsRoute ง่ายๆที่ผ่านอุปกรณ์ประกอบฉากเหล่านั้น การทดสอบนี้ง่ายกว่าเพราะคุณไม่ได้ "เชื่อมต่อ" ส่วนประกอบเช่น withRouter มีส่วนประกอบที่ซ้อนกันมากมายห่อหุ้มด้วยเสื้อนอกและมันจะไม่สนุก ข้อดีอีกอย่างก็คือคุณสามารถใช้บัตรผ่านนี้ในอุปกรณ์ประกอบฉากใดก็ตามที่คุณต้องการไปยังเส้นทาง นี่คือตัวอย่างง่ายๆโดยใช้การแสดงผล prop (ตัวอย่างที่แน่นอนจากเว็บไซต์ของพวกเขาhttps://reacttraining.com/react-router/web/api/Route/render-func ) (src / components / เส้นทาง / props-route)
import React from 'react';
import { Route } from 'react-router';
export const PropsRoute = ({ component: Component, ...props }) => (
<Route
{ ...props }
render={ renderProps => (<Component { ...renderProps } { ...props } />) }
/>
);
export default PropsRoute;
การใช้งาน: (แจ้งให้ทราบเพื่อรับ params เส้นทาง (match.params) คุณสามารถใช้ส่วนนี้และสิ่งเหล่านั้นจะถูกส่งให้คุณ)
import React from 'react';
import PropsRoute from 'src/components/routes/props-route';
export const someComponent = props => (<PropsRoute component={ Profile } />);
โปรดสังเกตว่าคุณสามารถผ่านอุปกรณ์ประกอบฉากพิเศษที่คุณต้องการได้เช่นกัน
<PropsRoute isFetching={ isFetchingProfile } title="User Profile" component={ Profile } />