每次使用路由器时,反应componentdidmount触发

时间:2017-05-25 17:34:09

标签: reactjs react-router

我的路由器中有两个组件,每个组件都有一个包含AXIOS的ComponentDidMount,用于检索json以加载表。问题是我只想在每个组件路由到第一次时执行AXIOS;不是连续的时间。

我只需要最初加载的JSON数据,但不需要连续渲染。当'子程序'时,如何不执行组件已渲染。是连续点击了吗?

菜单/的NavBar:

主页/子程序/按钮

路由器:

<Router>
  <div>
    <ul className="header">
      <li><Link to="/">Document WebApps</Link></li>
      <li><Link to="/subprocedures">Subprocedures</Link></li>
      <li><Link to="/buttons">Buttons</Link></li>
    </ul>

    <Route exact path="/" component={Home} />
    <Route path="/subprocedures" component={Subprocedures} />
    <Route path="/buttons" component={Buttons} />
  </div>
</Router>

组件:

class Subprocedures extends React.Component {
...
  componentDidMount() {
    axios.get(`http://www.acme.com:4448/api/DOCJSON.pgm?submit=SUBPROC`)
      .then(res => {
        const posts = res.data.data.children.map(obj => obj.data);
        this.setState({ posts });
      });
  }

0 个答案:

没有答案