javascript - 如何在功能组件中存储 React Refs
问题描述
在我的照片/主组件中,我通过一个对象进行映射,该对象来自我的状态,称为过滤图像,包含从数据库中检索的图像数据的实例。对于每个实例,我动态生成一个 React 组件“ImageItem”,它将向 DOM 显示图像。我需要做的是将“ImageItem”组件生成的 DOM 元素存储在主组件中。我遇到过能够使用 Reacts 的 ref 以及 useRef 和 forwardRef Hooks,但我想知道如何将这些 ref 存储在一个数组中。任何帮助将不胜感激!!!
照片.js
const Photos = ({ photos: { albums, images, filteredImages, loadingAlbums, loadingImages, currentAlbum }, getAlbums, getImages }) => {
const imageElement = useRef(null);
// When photos page is initially loaded
useEffect(() => {
getAlbums();
getImages();
// eslint-disable-next-line
}, []);
// When filteredImages is changed
useEffect(() => {
if (filteredImages !== null) {
console.log(imageElement.current);
}
}, [filteredImages]);
return (
<Masonry breakpointCols={breakpointColumnsObj} className="my-masonry-grid mx-5" columnClassName="my-masonry-grid_column">
{ filteredImages.map(image => <ImageItem ref={imageElement} image={image} key={image._id} />)}
</Masonry>
</div>
);
};
// imports from our state and brings it into the component as a prop
const mapStateToProps = state => ({
photos: state.photos
});
export default connect(mapStateToProps, { getAlbums, getImages })(Photos);
ImageItem.js
const ImageItem = ({image}, ref) => {
return (
<div ref={ref} className="grid-item my-1">
<a href="" className='grid-link'>
<img className='grid-img' src={image.fileLocation} alt=""/>
</a>
</div>
)
}
]
const forwardedImageElement = React.forwardRef(ImageItem)
export default forwardedImageElement;
解决方案
推荐阅读
- android - 当同一个 .jar 是应用程序和模块的依赖项时,“发现多个文件具有独立于操作系统的路径”错误
- matlab - 在循环中创建结构
- scala - scala split 为空时忽略最后一个值
- sql - 如何在sql语句中组合或合并字符数据类型
- c++ - 访问内存以遍历数组内联
- google-app-engine - 如何动态设置appengine gradle属性
- ssis - SSIS:使用 Azure Key Store 中的 CMK 插入 Always Encrypted 表时,来自 ODBC 提供程序的错误
- amazon-web-services - AWS Redis 安全组示例
- gulp - 每次运行都会增加 Gulp 执行时间 - 由于内存堆叠
- c# - 具有范围文本模式的 ASP.net 文本框不断重置其值