物化选项卡无法在React Router中使用

时间:2018-11-30 13:56:37

标签: reactjs react-router materialize

我试图了解为什么我在使用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存储。但是,每当我在表单中编写内容时,都会重新加载表单,而我却无法编写任何内容。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

那是因为dematerialize-js文件只是在页面加载时被加载,而当您使用react-routes时,页面并未被加载,因此该文件无法对其进行初始化并且选项卡已损坏。您必须执行以下操作:

Materialize-css With React, Initializing components using React Lifecycle method