【发布时间】:2020-12-07 20:28:33
【问题描述】:
我正在尝试将路线存储在一个文件中,以使它们更加模块化。我正在使用 BrowserRouter、Switch 和 Route。现在,组件没有显示在链接所在的页面上。我将 Django 用于后端,将 React 用于前端。这些应该是显示在顶部栏中的 URL,唯一的 Django URL 是 API。我需要实际的 URL,以便在导航栏中链接它们。
App.js:
import React from 'react';
import MembersRouter from "./members/MembersRouter";
import {
BrowserRouter as Router,
Switch,
Route
} from 'react-router-dom';
function App() {
return (
<div className="App">
<Router>
<Switch>
<Route path="/memberships/redesign" component={ MembersRouter }/>
</Switch>
</Router>
</div>
);
}
export default App;
MembersRouter.js:
import React from 'react';
import MemberForm from './MemberForm';
import MembersTable from './MembersTable';
import MembershipForm from './MembershipForm';
import MembershipTable from './MembershipTable';
import LockerRentalForm from './LockerRentalForm';
import LockerRentalTable from './LockerRentalTable';
import {
BrowserRouter as Router,
Switch,
Route
} from 'react-router-dom';
export default function MembersRouter() {
return (
<Router>
<Route path="/member_form" component={ MemberForm } />
<Route path="/members_table" component={ MembersTable} />
<Route path="/membership_form" component={ MembershipForm } />
<Route path="/membership_table" component={ MembershipTable } />
<Route path="/locker_rental_form" component={ LockerRentalForm } />
<Route path="/locker_rental_table" component={ LockerRentalTable } />
</Router>
);
}
Django URL 模式:
urlpatterns = [
url(r'^redesign/$', ReactView.as_view(), name='member_index'),
url(r'^redesign/member_form/$', ReactView.as_view(), name='member_form'),
url(r'^redesign/member_table/$', ReactView.as_view(), name='member_table'),
url(r'^redesign/membership_form/$', ReactView.as_view(), name='membership_form'),
url(r'^redesign/membership_table/$', ReactView.as_view(), name='membership_table'),
url(r'^redesign/locker_rental_form/$', ReactView.as_view(), name='locker_rental_form'),
url(r'^redesign/locker_rental_table/$', ReactView.as_view(), name='locker_rental_table'),
url(r'^api/make_member/$', redesign_member_form),
url(r'^api/get_members/(?P<page>\d+)/$', redesign_members_table),
url(r'^api/make_membership/$', redesign_membership_form),
url(r'^api/get_memberships/(?P<page>\d+)/$', redesign_memberships_table),
url(r'^api/make_locker_rental/$', redesign_locker_rental_form),
url(r'^api/get_locker_rentals/(?P<page>\d+)/$', redesign_locker_rentals_table),
url(r'^$', index),
]
BaseView 和 ReactView:
class BaseView(View):
page_title = ""
def get_navbar(self, user):
return 'navbar/nav_template.html'
def get_context_data(self, *args, **kwargs):
context = super(BaseView, self).get_context_data(*args, **kwargs)
context['navbar'] = self.get_navbar(self.request.user)
return context
class ReactView(BaseView, TemplateView):
template_name = 'redesign/react_dashboard.html'
def get_context_data(self, **kwargs):
context = super(ReactView, self).get_context_data(**kwargs)
return context
【问题讨论】:
-
您在
MembersRouter中没有MembershipRouter。您正在导出MembersRouter。 -
@Ejaz 太疯狂了,我没有收到错误消息!我会解决这个问题,看看它是否有效......
-
@Ejaz 仍然不起作用,但感谢您指出这一点!
-
Right now, the components are not showing up on the page where the links are.是什么意思? -
@Maxime 组件将显示在带有导航栏的页面上,导航栏在那里,但不是应该在路由器中传递的组件
标签: javascript python django reactjs routes