React Native 移动光标,都什么年代还在用传统setNativeProps

React Native 移动光标,都什么年代还在用传统setNativeProps?

对我的故事不感兴趣的直接跳转正文部分。

念叨

今天遇到一个bug,要解决这个bug呢就需要手动移动input的光标。然后我发现之前我在借人家的代码的时候已经借过移动光标的代码了:

1
inputRef.current.setNativeProps({selection: {start: 1, end: 1}});

于是我先去搜索了一下setNativeProps的用法,在最新版本的RN文档上明确的给出了这个方法的使用示例,但是却没有API文档。。。😓

也就是说,理论上,这个方法是可以使用的,于是我又搜索了一下如何使用这个方法实现移动光标,结果我发现上述写法是完全正确的,但是完全没用!

我还发现这些文章还说有一个_lastNativeSelection属性可供读取,但是我只读到了undefined。于是乎,我大胆的怀疑,这个方法是不是已经寄了😰

然后我打印了一下inputRef.current发现有这么一个属性:"setSelection": [Function setSelection],,于是乎我大胆尝试,请看下文……

正文

不要再使用setNativeProps方法了,这个方法疑似不再受到支持了。如果你需要操作input的光标,请直接使用setSelection。示例如下:

1
inputRef.current.setSelection(1, 1);

函数签名(我猜的):

setSelection(selectionStart,selectionEnd)

  • selectionStart
    • 被选中的第一个字符的位置索引,从 0 开始。如果这个值比元素的 value 长度还大,则会被看作 value 最后一个位置的索引。
  • selectionEnd
    • : 被选中的最后一个字符的 下一个 位置索引。如果这个值比元素的 value 长度还大,则会被看作 value 最后一个位置的索引。

React Native 移动光标,都什么年代还在用传统setNativeProps
2024/02/04/technology/react/rn_input_selection/
作者
charlesix59
发布于
2024年2月4日
许可协议