Reactjs 使用路由器时,每次都要对组件进行触发

Reactjs 使用路由器时,每次都要对组件进行触发,reactjs,react-router,Reactjs,React Router,我的路由器中有两个组件,每个组件都有一个包含AXIOS的ComponentDidMount,用于检索json以加载表。问题是我只想在每个组件第一次路由到的时候执行AXIOS;不是连续几次 我只需要最初加载JSON数据,但不需要在后续渲染中加载。当连续单击“子流程”时,如何不执行渲染的组件 菜单/导航栏: 主页/子流程/按钮 路由器: <Router> <div> <ul className="header"> <li><

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

我只需要最初加载JSON数据,但不需要在后续渲染中加载。当连续单击“子流程”时,如何不执行渲染的组件

菜单/导航栏:

主页/子流程/按钮

路由器:

<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>

不确定,但可以尝试使用redux和hasFired等键的全局状态,以确保只有当hasFired为false时才会触发,并在组件中将其设置为true。谢谢,我认为会有一种更标准的方法来执行此操作,因为这对我来说很常见(我是新手)-让用户在具有ComponentDidMount的菜单选项之间来回切换。这不是一个相当简单的问题。人们希望在每次访问时刷新页面,因为在两次访问之间后端数据可能已经更新。缓存数据或维护全局变量(用于检查回迁)很容易使应用程序过于复杂而无法维护。请查看像relay/apollo这样的graphQL客户机,它们正好解决了这类问题谢谢您的反馈!我会的。你说得对-大多数应用程序都希望引用数据,以防数据发生更改。在我的情况下,我知道不会这样做,所以我只想加载每个表一次。我能够调节ComponentDidMount,但是在连续的渲染中,表是空的。
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 });
      });
  }