栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通过React Router重新加载相同路由后的API调用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过React Router重新加载相同路由后的API调用

componentDidMount
仅在组件最初安装在DOM中且URL参数更改时未安装新组件时才运行。

您需要使用

componentDidUpdate
并检查URL参数是否已更改,如果是这种情况,请再次获取数据。

function getData() {  return new Promise(resolve => {    setTimeout(() => {      resolve(Array.from({ length: 3 }, () => Math.random()));    }, 1000);  });}class Page extends React.Component {  state = { data: [] };  componentDidMount() {    getData().then(data => {      this.setState({ data });    });  }  componentDidUpdate(prevProps) {    if (prevProps.match.params.pathParam !== this.props.match.params.pathParam) {      getData().then(data => {        this.setState({ data });      });    }  }  render() {    return (      <div>        {this.state.data.map(element => <div key={element}>{element}</div>)}      </div>    );  }}class App extends React.Component {  render() {    return (      <BrowserRouter>        <div>          <link to="foo"> Foo </link>          <link to="bar"> Bar </link>          <Switch> <Route path="/:pathParam" component={Page} />          </Switch>        </div>      </BrowserRouter>    );  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436795.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号