我试图了解为什么我在使用React Router时实现选项卡不起作用。
我在导航栏上有3个选项,它们将打开各自的页面:“酒店”,“统计信息”和“学院”。 每个部分的内部都有标签。
在酒店内部,我有3个物化选项卡:Gen Info,Staff,Content,在其他页面上,我也有物化选项卡。
在外部React Router上使用时,它们可以完美工作。这是代码:
class App extends Component {
render() {
return (
<div className="App">
<Navbar/>
<div className="body-extranet">
<Header/>
<Switch>
<Route path="/hotels" render={() => (
<PageHotel tab={"Hoteis"}/>
)}>
</Route>
<Route path="/statistics/" render={() => (
<PageStatistics tab={"Statistics"}/>
)}>
</Route>
<Route path="/academy/" render={() => (
<PageAcademy tab={"Academy"}/>
)}>
</Route>
</Switch>
</div>
</div>
);
}
}
export default App;
例如,在PageHotel Component内部,我具有实现选项卡
class PageHotel extends Component {
render() {
const { hotel, tab } = this.props;
return (
<div className="page">
<div className="subheader-tabs">
<div class="row">
<div class="col s12">
<ul class="tabs">
<li class="tab col"><a href="#info">General Info</a></li>
<li class="tab col"><a href="#staff">Staff</a></li>
<li class="tab col"><a href="#content">Content</a></li>
</ul>
<div className="divider"></div>
</div>
<div id="info" class="col s12">
<div className="container">
<Form></Form>
</div>
</div>
<div id="staff" class="col s12">
<Staff></Staff>
</div>
<div id="content" class="col s12">
</div>
</div>
</div>
</div>
);
}}
当我单击导航栏上的酒店时,物化选项卡甚至没有启动,并且所有选项卡的内容都分散在单个页面上。我必须重新加载页面一次才能使其正常工作。
我尝试使用react-materialize并开始起作用,但是,我遇到了其他问题。其中的一个标签具有受控形式,一旦更改了本地状态,该表单就会更新redux存储。但是,每当我在表单中编写内容时,都会重新加载表单,而我却无法编写任何内容。
有人知道为什么会这样吗?
答案 0 :(得分:0)
那是因为dematerialize-js文件只是在页面加载时被加载,而当您使用react-routes时,页面并未被加载,因此该文件无法对其进行初始化并且选项卡已损坏。您必须执行以下操作:
Materialize-css With React, Initializing components using React Lifecycle method