Я довольно новичок в React Native, и я буду признателен, если кто-нибудь скажет мне, почему это происходит. У меня есть TextInput, завернутый в Draggable, который отлично работает; его можно перетаскивать нормально. У меня также есть таймер setInterval, запускающий раз в секунду функцию обновления, которая устанавливает некоторое состояние. Проблема возникает, когда я использую onDrag (или onDragRelease или onRelease) внутри Draggable. Происходит следующее: я начну перетаскивать TextInput, но если во время перетаскивания функция обновления запускается и использует this.setState, координаты TextInput go вернутся в исходное положение. Если я выпущу его первым, он останется на месте. Я хочу понять, как setState мешает этому и как его обойти.
Таймер установлен здесь:
componentDidMount() {
let tempTimerID = setInterval(this.updateTimer, 1000);
this.setState({timerID : tempTimerID});
}
Он вызывает это:
updateTimer = () => {
// There's some other stuff in here, but for simplicity I deleted it, as the only thing that
// interferes with the Draggable is using setState on any state variable...doesn't have to be
// the one below, and none are directly related to the Draggable. Without this, the problem disappears
this.setState({timeText : "Time's Running Out!"});
}
И Draggable здесь, внутри render ():
<Draggable position={this.state.textPosition}
minX={0} minY={0} maxX={App.screenWidth} maxY={App.screenHeight}
// note: I had onDrag doing some stuff here, but while trying to
// narrow down the problem, I took that out; the problem goes away if I
// don't include onDrag at all, but comes back even with an empty function
// triggered...
onDrag={() => {}}
>
<TextInput style={styles.textBox}
placeholder="Enter Text Here"
multiline={true}
textAlignVertical='top'
onTouchStart={this.turnOffScrolling}
onTouchEnd={this.turnOnScrolling}
onEndEditing={(e) => {this.setState({bottomText: e.nativeEvent.text})}}
/>
</Draggable>
Я погуглил проблему и проверил здесь на stackoverflow, но не увидел ничего, что решило бы это специально. Любое понимание приветствуется, спасибо.