先上代码
import React, { PureComponent } from "react";
class Test extends PureComponent {
render() {
const data = [
{ title: "aaa", value: "ddddddddd1" },
{ title: "bbb", value: "fffffff2" },
{ title: "ccc", value: "zzzzzzzzzzz3" },
{ title: "ddd", value: "ddddddddd4" },
{ title: "eee", value: "qqqqqqqqq5" }
];
return (
<div>
{data.map((item, index) => (
<div key={index}>
{item.title}
<input
key={index}
value={item.value}
onChange={e => {
console.log(e.target.value);
}}
/>
</div>
))}
</div>
);
}
}
export default Test;
修改input的内容后,会导致光标跳到最后面。
如何修改代码可以保证修改内容后光标不变?
另外,也想问下这个到底是什么原因导致的? 如果不用受控组件,就不会有这个问题,但是检测不到修改.
你的例子里,光标被移动到最后的原因是你并没修改
input
的值,所以当你增删某个字符后,onChange
只是打印了一下即将要变成的结果,相当于input
刚被增删了一个字符,然后又瞬间被改回原始值了。就这么增删 =》reset 的操作,就把光标弄到最后面了。codesandbox 示例