2016-11-11 13 views
19

Tôi đang sử dụng các thành phần tương tự cho ba tuyến đường khác nhau:Nhiều tên đường dẫn cho một thành phần tương tự trong Phản ứng Router

<Router> 
    <Route path="/home" component={Home} /> 
    <Route path="/users" component={Home} /> 
    <Route path="/widgets" component={Home} /> 
</Router> 

Liệu có cách nào để kết hợp nó, để được như:

<Router> 
    <Route path=["/home", "/users", "/widgets"] component={Home} /> 
</Router> 

Trả lời

26

tôi không nghĩ rằng nó là không may.

Bạn có thể sử dụng một map như bạn sẽ làm gì với bất kỳ thành phần JSX khác mặc dù:

<Router> 
    {["/home", "/users", "/widgets"].map(path => 
     <Route path={path} component={Home} /> 
    )} 
</Router> 
2

Theo Phản ứng Router docs các proptype 'path' là kiểu string .so không có cách nào bạn có thể vượt qua một mảng làm đạo cụ cho Thành phần tuyến đường.

Nếu mục đích của bạn là để định tuyến thay đổi duy nhất mà bạn có thể sử dụng cùng một thành phần cho tuyến đường khác nhau không có vấn đề với điều đó

19

Ít nhất với phản ứng-router v4 các path có thể là một chuỗi biểu thức chính quy, vì vậy bạn có thể làm điều gì đó như thế này:

<Router> 
    <Route path="/(home|users|widgets)/" component={Home} /> 
</Router> 

như bạn có thể thấy đó là một chút dài dòng vì vậy nếu bạn component/route là đơn giản như thế này có lẽ không có giá trị nó.

Và tất nhiên nếu điều này thực sự xuất hiện thường xuyên, bạn luôn có thể tạo thành phần bao gói tham số paths mảng, có thể dùng lại regex hoặc .map logic.

+1

Ý tưởng tuyệt vời @Cameron. Tôi thấy hữu ích khi sửa đổi nó một chút để chỉ khớp các đường dẫn bắt đầu với một trong các nhóm: '/^\/(home | users | widgets) /' Bây giờ, '/ widgets' sẽ khớp, nhưng'/dashboard/widgets 'sẽ không khớp. – Towler

+3

Nên là tuyệt vời, nhưng bây giờ loại regex không hợp lệ trên xác nhận loại prop: 'Cảnh báo: Loại chống lỗi: Không hợp lệ prop' path' của loại 'regexp' được cung cấp cho' Tuyến', dự kiến ​​'chuỗi'.' –

+0

@ FábioPaiva vâng tôi vẫn chưa tìm ra cách để đặt một regex tùy ý trong các tuyến đường – Atav32

Các vấn đề liên quan