此问题修改了r/reactjs上的question。
我有一个受控的input
,我可以通过编程改变它的值。我想使用.setSelectionRange()
来保持输入中插入符号的位置。
但这行不通:默认情况下,每次重新渲染都会自动将选择范围设置为输入的结尾。
此问题在sandbox中说明,其中原始问题的作者使用10 ms setTimeout()
延迟修复了此问题。
如何在不使用setTimeout()
或getSnapshotBeforeUpdate()
的情况下实现这一点?setTimeout()
或getSnapshotBeforeUpdate()
与Hooks不兼容。
1条答案
按热度按时间hrirmatl1#
在我看来,基本的问题是
.setSelectionRange()
在模板中被内联使用,应该被 Package 在useEffect()
中。我还将拉出选择处理程序,只是为了更整洁一点(根据
handleDomainChange()
和handleSubmit()
)。将效果用于选择更新
将模板更改为调用handleSelection()
原始代码供参考