Как использовать реагировать родные реквизиты TextInput? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть следующий простой компонент:

function TestComp() {
    const [selection, setselection] = React.useState({ start: 0, end: 0 });

    return (
        <View style={{ justifyContent: "center", flex: 1 }}>
            <TextInput
                selection={selection}
                onSelectionChange={(event) => {
                    const {nativeEvent: { selection: { start, end } }} = event;
                    setselection({ start, end });
                }}
                multiline={true}
            />
        </View>
    );
}

Моя проблема заключается в том, что часто происходит задержка с обновлением значения от selection до setselection, что заставляет каретку перепрыгивать или вызвать ошибку: setSpan(1 ... 1) ends beyond length 0 (что, как я считаю, означает, что выделение установлено больше значения TextInput)

Как я должен использовать реквизит выделения? Моя цель - иметь возможность перемещать курсор, когда мне нужно.

Я использую expo, но с удаленной отладкой, чтобы не вызывать дополнительную задержку.

Пример прыжка:

enter image description here

...