Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 当道具更新时对组件调用自定义方法_Reactjs_Redux - Fatal编程技术网

Reactjs 当道具更新时对组件调用自定义方法

Reactjs 当道具更新时对组件调用自定义方法,reactjs,redux,Reactjs,Redux,我有一个YouTubeiFrame react组件,它呈现一个空div,然后使用componentDidMount将YouTube iframe播放器放到该div中。一切正常。我在使用播放器的组件上定义了一个cueVideo方法 提示新视频的API: cueVideo(videoId) { this.player.cueVideoById(videoId) } 在“我的应用”的不同位置,您可以单击按钮或其他操作来指示您要播放新视频。执行此操作时,“currentVideo”状态将通过red

我有一个YouTubeiFrame react组件,它呈现一个空div,然后使用componentDidMount将YouTube iframe播放器放到该div中。一切正常。我在使用播放器的组件上定义了一个cueVideo方法 提示新视频的API:

cueVideo(videoId) {
  this.player.cueVideoById(videoId)
}
在“我的应用”的不同位置,您可以单击按钮或其他操作来指示您要播放新视频。执行此操作时,“currentVideo”状态将通过redux更新,因此YouTubeiFrame组件将新的视频id作为更新的道具接收

我的问题是如何调用上面的cueVideo方法来响应更新的道具。我考虑过使用shouldComponentUpdate将这个.props.currentVideo与下一个props进行比较 但是concious这个方法实际上应该返回true/false,因此可以调用render函数。我只想在当前视频道具更改时调用cueVideo-我真的不需要重新渲染

最好的方法是什么

我只想在当前视频道具更改时调用cueVideo-我真的不需要重新渲染

收到新道具后,React将自动调用render来更新组件。将所有更新刷新到DOM后,React还将调用组件上的componentDidUpdate,以使您有机会响应更改。正如上面所说:

当组件被更新时,利用这个机会在DOM上进行操作

我建议这是根据需要调用代码的最佳位置

我只想在当前视频道具更改时调用cueVideo-我真的不需要重新渲染

收到新道具后,React将自动调用render来更新组件。将所有更新刷新到DOM后,React还将调用组件上的componentDidUpdate,以使您有机会响应更改。正如上面所说:

当组件被更新时,利用这个机会在DOM上进行操作


我建议这是根据需要调用代码的最佳位置。

this.player是否在组件中?是的,this.player是组件的一部分。为什么不在渲染方法的顶部调用它?this.player.cuevideobyid this.props.videoId。渲染将被调用,因为状态发生了更改。除非必要,否则虚拟DOM不会进行任何DOM更新。this.player是否在组件中?是的,this.player是组件的一部分。为什么不在render方法的顶部调用它?this.player.cuevideobyid this.props.videoId。渲染将被调用,因为状态发生了更改。除非必要,否则虚拟DOM不会进行任何DOM更新。