Javascript 反应表在选择时重新呈现整个表
我有一个相对标准的行,可以选择-使用HOC SelectTable实现,很像react表提供的示例: 我的一列的关键区别在于它是一个自定义组件:Javascript 反应表在选择时重新呈现整个表,javascript,reactjs,react-table,Javascript,Reactjs,React Table,我有一个相对标准的行,可以选择-使用HOC SelectTable实现,很像react表提供的示例: 我的一列的关键区别在于它是一个自定义组件: const columns = [ { ...other columns... { Header: "Sound file", accessor: "sound_file", Cell: props => { return <Soun
const columns = [
{
...other columns...
{
Header: "Sound file",
accessor: "sound_file",
Cell: props => {
return <SoundFilePlayer url={props.row.sound_file_url} />;
},
minWidth: 80
}
];
const列=[
{
……其他栏目。。。
{
标题:“声音文件”,
访问者:“声音文件”,
单元格:道具=>{
返回;
},
最小宽度:80
}
];
SoundFilePlayer
组件是一个播放作为道具传递到组件中的声音文件的组件。实际上,它加载传入的URL并呈现声音播放器:
加载url之前(持续时间默认为0:00)
然后在加载后以正确的持续时间进行渲染:
我面临的问题是,每当在我的表中选择一行时,整个表都会重新呈现(如果没有声音播放器就可以了)——这意味着声音文件播放器会重置回0:00时长,然后以正确的时长重新加载。每一行都会发生这种情况
我的猜测是,将检查所有行的键,以查看它们当前是否已被选中,从而重新呈现整个表
我只重新渲染选定的行,而不是整个表吗
以及其他一些SO帖子,但似乎不能只重新呈现受影响的行。或者甚至只使用复选框重新呈现列?您可以尝试使用UseMoom钩子像这样记忆组件
const file=React.usemo(()=>,[props.row.sound\u file\u url]);
它不会重新创建组件功能,除非文件url发生更改,否则将从内存中获取该功能。因此,我最终找到了一个解决方案-只需将我的react table版本降级,特别是6.8.6,即可解决此问题
似乎在以后的版本中引入了一个bug(考虑到现在的关注点在版本7上,我怀疑这个bug是否会被修复)。描述有点难以获得,一个复制该问题的代码沙盒会很好。