reactjs - 如何通过组件键道具滚动到组件?
问题描述
我有一个渲染以下子组件的父组件:
Object.values(eventData).map((event) => {
return (
<EventsSection
key={event.id}
eventID={event.id}
eventDate={event.date}
/>
);
})
假设有 10-20 条记录eventData
- 在某个用户操作后,我如何使浏览器窗口EventSection
根据其属性滚动到记录上key
?
解决方案
您需要使用ref
来自 id 的 a。如果用户想要单击列表并使浏览器滚动到该列表,则类似下面的内容就足够了ref
。
function renderEventSection(props) {
const { key, name } = props
const ref = useRef()
const handleClick = () =>
ref.current.scrollIntoView({
behavior: 'smooth',
block: 'start',
});
return (
<div key={key} ref={ref} onClick={handleClick}>
{name}
</div>
)
}
如果您需要从列表外部滚动,只需将该逻辑移动到父组件或使用 React 上下文(参见第二个示例)。此外,如果您需要另一个事件,只需将其更改为任何其他所需的用户交互。
推荐阅读
- r - 使用ggplot的带有椭圆边界的R散点图
- android - 如何添加依赖?
- c# - System.Diagnostics.Process.Start() 正在吃掉我的 URL 的一部分
- oauth-2.0 - 创建 LinkedIn oAuth2.0 应用程序 2 ledged - 不允许应用程序创建令牌
- symfony - Symfony 部署谷歌云
- c++ - 谁能帮我理解这段 C++ 代码?
- html - 列宽不相等
- apache - 如何限制对一台 Apache Web 服务器的访问
- r - R:在一个显示器中绘制多个 qcc::cusum 图表
- java - 如何检查Java中的double或float值是否只有一位小数