A-ANing / react-native-rn-videoplayer

基于react-native-video的视频播放器(上下滑动改变音量屏幕亮度,缓冲进度,双击暂停等ios Android)
95 stars 40 forks source link

发现个致命问题,这串代码在render里执行 #19

Open wulaizi opened 3 years ago

wulaizi commented 3 years ago

if (this.url && this.url != this.props.url) { this.onchangeUrl() } 切换视频时报错,最后排查得到onchangeUrl 这个方法里面带有this.setState 而onchangeUrl 的调用位置却是在render处 这样会到导致死循环

大佬要判断地址是否和上一次的一样 可以在生命周期componentDidUpdate 里完成哦

wulaizi commented 3 years ago

说错了不应该是componentDidUpdate

应该是componentWillReceiveProps shouldComponentUpdate 都可以

componentWillReceiveProps(nextProps) { if (nextProps.url !== this.props.url) { this.onchangeUrl() } }

A-ANing commented 3 years ago

应该是不会死循环的,因为this.url和props的url不相同才会执行onchangeUrl方法;

当然最好的写法是在com生命周期里;

可以pr一波,我没有时间,最近项目太忙了;