3
关注
1597
浏览

阵营路由器链路使用参数不与componentDidMount和终极版爱可信数据的新数据刷新页面获取

为什么被折叠? 0 个回复被折叠
iloveweb 未验证用户 用户来自于: 广东省
2020-09-17 03:39

的问题是在已渲染电影路线的方式,你似乎有混合的componentrender道具语法。你既可以配置您的路线

<Route path='/movie/:movieId' exact component={Movie} /> 

<Route path='/movie/:movieId' exact render={(props)=><Movie {...props}/>} /> 

确保使用渲染道具喜欢它显示在上面的例子中,否则路由器道具的时候赢得了到路由器道具传递到组件不可用于Movie组件,它将与路由器不一致,例如更改网址,但在点击Link时不会实际导航

此外,当您导航到相同路由时,组件不会重新链接未重铺但重新呈现。因此,你需要在componentWillReceiveProps功能来获取更新的数据:

componentWillReceiveProps(nextProps) { 

    if(nextProps.match.params.movieId !== this.props.params.movieId) { 
     window.scroll(0, 0); 
     this.movieID = nextProps.match.params.movieId 
     this.props.getMovieInfo(this.movieID); 
     this.props.getMovie_YOUTUBE(this.movieID); 
     this.props.getMovie_SIMILAR(this.movieID); 
    } 
} 
lalaym 未验证用户 用户来自于: 广东省
2020-09-16 16:51

当您从一个路由导航到同一路由的另一个实例时,react-router将使用相同的组件,而无需安装或卸载,重复使用具有不同道具的相同组件。 因此,组建一个开发人员POV,你会看到组件将被使用,但它的道具将被更新。

我可以建议的是将您的逻辑提取到组件类上的自定义方法中,并在componentDidMountcomponentWillReceiveProps上重新使用它,当相同路由的URL更改时调用它。

class MyComponent extends React.Component { 
    componentDidMount() { 
    myCustomLogic(); 
    } 
    componentWillReceiveProps(nextProps) { 
    if (nextProps.params.movieId !== this.props.params.movieId) { 
     myCustomLogic(); 
    } 
    } 
    myCustomLogic() { 
    ... 
    } 
} 

关于作者

问题动态

发布时间
2020-09-15 15:51
更新时间
2022-09-15 16:02
关注人数
3 人关注

相关问题

数据库安全审计系统提供了一种什么样的的安全机制
数据库审计是什么?
有什么产品可以对数据库的漏洞进行扫描的?
谁能介绍一下安华金和的数据库风险评估系统?
乡镇边界数据和行政村边界数据如何获取得到啊?
墨迹赤必可以提供稳定的天气数据接口吗?
云数据库MySql,是存放在独立的服务器上吗?购买后我们如何查看数据库数据
如何防止企业数据泄露,怎样给公司数据加密?
谁能说说数据库加密是什么?
VS系列数据采集设备发送模式?
个人工作笔记 Powered BY WeCenter V4.1.0 © 2024 粤ICP备2020123311号