【发布时间】:2017-09-19 11:34:28
【问题描述】:
我的路线设置如下:
<Router>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/contact" component={Contact} />
</Switch>
</Router>
在 Home 组件上,我只想在第一次挂载时进行 ajax 调用。
export default class Home extends Component {
componentDidMount(){
//make ajax call only once. Do some stuff on .then()
}
}
问题是如果用户在 Home 和 About 之间切换页面,Home 组件会重新渲染所有内容,因此我的 ajax 调用将再次被触发。
我该如何解决这个问题? 我应该将第一个数据提取存储在 redux 存储中,然后使用 if 语句还是有更好的方法?
【问题讨论】:
-
你可以缓存数据或者返回一个promise。一旦 promise 得到解决,您将可以访问数据。不需要 IF 语句。
-
缓存在哪里?在商店里?本地存储?如果可以,请添加示例
-
我是否应该将第一个数据提取存储在 redux 存储中,然后使用 if 语句 ---> 如果您使用的是 redux,这是最好的方法。
-
@NarasimhaReddy 现在,不,我没有使用它,但即便如此,我仍然需要做一个 IF 语句来检查之前是否提取了数据,对吧?
-
是的,你需要检查你的redux状态是否有数据。
标签: reactjs react-router