- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在我的应用程序中使用 Redux,在一个组件内 我想在商店发生变化时滚动到特定的 div 标签。我有 Redux 部分工作,所以它触发了 componentDidUpdate() 方法(我已经路由到这个组件 View )。据我所知,问题是 scrollIntoView() 方法无法正常工作,因为 componentDidUpdate() 具有滚动到顶部覆盖 scrollIntoView() 的默认行为。为了解决这个问题,我将调用 scrollIntoView() 的函数包装在一个 setTimeout 中,以确保稍后发生。我想做的是调用 preventDefault() 或任何其他更优雅的解决方案,但我找不到从哪里获取触发“scrollTop”的事件我在这里查看了文档:https://facebook.github.io/react/docs/react-component.html#componentdidupdate并且在此函数中传递的参数是 componentDidUpdate(prevProps, prevState) ,因为没有事件我不知道如何调用 preventDefault()
我已关注此文档:https://facebook.github.io/react/docs/refs-and-the-dom.html并尝试了人们在这里建议的不同方法:How can I scroll a div to be visible in ReactJS?
虽然没有任何效果如果有人对我有任何提示,这是我的代码,谢谢
class PhotoContainer extends React.Component {
componentDidUpdate(){
setTimeout(() => {
this.focusDiv();
}, 500);
}
focusDiv(){
var scrolling = this.theDiv;
scrolling.scrollIntoView();
}
render() {
const totalList = [];
for(let i = 0; i < 300; i += 1) {
totalList.push(
<div key={i}>{`hello ${i}`}</div>
);
}
return (
<div >
{totalList}
<div ref={(el) => this.theDiv = el}>this is the div I'm trying to scroll to</div>
</div>
)
};
最佳答案
好吧,已经有一段时间了,但我在另一个没有 setTimeOut
函数的项目中工作,所以我想回答这个问题。由于 Redux 通过 props 传递新的更新,我使用了 componentWillRecieveProps()
方法而不是 componentDidUpdate()
,这使您可以更好地控制更新的属性并按预期工作使用 scrollIntoView()
函数。
class PhotoContainer extends React.Component {
componentWillReceiveProps(newProps) {
if (
this.props.navigation.sectionSelected !==
newProps.navigation.sectionSelected &&
newProps.navigation.sectionSelected !== ""
) {
this.focusDiv(newProps.navigation.sectionSelected);
}
}
focusDiv(section){
var scrolling = this[section]; //section would be 'theDiv' in this example
scrolling.scrollIntoView({ block: "start", behavior: "smooth" });//corrected typo
}
render() {
const totalList = [];
for(let i = 0; i < 300; i += 1) {
totalList.push(
<div key={i}>{`hello ${i}`}</div>
);
}
return (
<div >
{totalList}
<div ref={(el) => this.theDiv = el}>
this is the div I am trying to scroll to
</div>
</div>
)
};
}
关于javascript - react ,使用 Refs 到 scrollIntoView() 在 componentDidUpdate() 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45077004/
我正在制作一个网站,并制作了将元素滚动到视图中的JavaScript代码,我按下按钮的次数越多,滚动到视图中的元素的ID应该越高。它在Edge和Firefox上运行正常,但在Chrome上,它只在第一
我正在制作一个网站,并制作了将元素滚动到视图中的JavaScript代码,我按下按钮的次数越多,滚动到视图中的元素的ID应该越高。它在Edge和Firefox上运行正常,但在Chrome上,它只在第一
这个方法看起来是为了测试,但实际上我需要在使用更多小部件重建 UI 后将一个小部件滚动到屏幕上。 这存在于 GWT 世界中。 有什么方法可以在 Flutter 中实现这一点? 最佳答案 您可以使用 s
我有一个输入字段,它位于 (blur) 上或 (change)触发一个函数,该函数应该将页面滚动到下一个元素 block 。由于我忽略的原因,它不起作用,尽管在 (click) 上使用时它工作正常与按
我有一个嵌套的子容器,当我尝试 scrollIntoView 时,它破坏了父容器。我不明白为什么它会这样。请帮我解决这个问题。 请查看下面或 jsfiddle 上的代码 function moveTo
我想建立一个索引字母。当我单击字母(例如 A、B、C)时。它应该滚动到所属的标题。我在这里使用了 scrollIntoView 。除了“block:start”,一切都很好。当我想滚动到开始的标题时,
我有两个列表框的 View : 列表框 1 元素:A、B、C。 列表框 2 元素:...、A、...、B、...、C、...(长列表)。 当用户在列表框 1 中选择一个元素时,我想在列表框 2 中也将
我使用的是 Javascript(没有 jQuery),并且我有一个弹出的子菜单元素,它有时会超出查看器的底部,所以我使用scrollIntoView让子菜单立即移动以包含所有内容行项目完全在视口(v
我的网站有以下代码: function clickMe() { var element = document.getElementById('about'); element.scrollIn
使用javascript,我们可以使用- document.getElementById('pluginsource_wrapper').scrollIntoView(); 我可以理解scrollIn
当屏幕到达引用点(在方法滚动内部)时,如何停止滚动到 View ?(当屏幕到达其引用点时,我向上滚动一点,代码自动返回到引用点) interface Props { section: numb
如何制作 scrollIntoView只滚动直接父级(例如 div 和 overflow-y: scroll; )而不是整个页面? 我有一个网络界面,我正在为一个内部的、非常具体的目的而制作。我页面上
var mediaIdForFocus = 'mediaIdForFocus; ?>'; if(mediaIdForFocus) $('#flagimg'+mediaIdForFocus).get(0
我有一个非常基本的 scrollIntoView 函数,每当我单击导航栏中的链接时它就会运行。我遇到的问题是,当页面加载时,它会快速捕捉到滚动位置,然后又回到顶部。我怎样才能让它不会在页面的开头对齐?
我遇到一个问题,即在移动设备上使用 select2 jQuery 插件会出现问题,即,当下拉菜单被激活并且它在页面的底部时,虚拟键盘会覆盖选择选项。 为了解决这个问题,我想在页面打开之前将 selec
scrollIntoView() 函数有问题。我有一棵树和两个按钮: 首先将树滚动到底部节点 第二个将树滚动到顶部节点 我不知道我应该怎么做,这个滚动操作总是将节点滚动到树的顶部。我的意思是这个 fi
我正在使用 vanilla JS 让按钮平滑地向下滚动到 div 元素(目标 id) 我的代码是这样的: this.myButton.addEventListener("click",load_sec
我在事件目标上使用 scrollIntoView() 以确保它在其具有 overflow: scroll 的父项中可见,这主要是出于可访问性原因。 我的问题是我还有与该元素关联的点击事件,当点击事件也
有什么办法可以预防 scrollIntoView() 影响我尝试过的滚动监听器 evt.data.stopPropagation(); 和 elementos.scrollIntoView().
当我们使用 scrollIntoView(true) 时,整个页面布局向上移动。根据我的要求,我需要使用 true 参数。我需要避免这个举动。我在 https://jsfiddle.net/7v4t3
我是一名优秀的程序员,十分优秀!