React Native 滑块存在滞后问题

Raj*_*rma 5 react-native expo react-native-elements

React Native 滑块 onValueChange 调用 setState 会使滑块滞后。

我也尝试过 debounce 功能,但它不能解决我的问题,因为我必须在屏幕上显示更改值。因此,如果不使用 lodash 的 debounce,滑块会滞后,当使用 debounce 滑块移动时比以前的方法更平滑,但值的变化(我必须在屏幕上显示的状态值)不会立即改变,值的变化反映在屏幕上滞后意味着在屏幕上显示需要时间。

import React from "react";
import Slider from "react-native-slider";
import { StyleSheet, View, Text } from "react-native";

export default class SliderExample extends React.Component {

  state = {
    value: 0.2
  };

  render() {
    return (
      <View style={styles.container}>
        <Slider
          value={this.state.value}
          onValueChange={value => {
              this.setState({ value })
                // this.props.changeState(this.state.value)
                console.log(this.state.value)
            }}
          maximumValue={100}
          step={1}
        />
        <Text>
          Value: {this.state.value}
        </Text>
      </View>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

还有一件事是,当我只实现上面的滑块时,没有问题,但是当我在有许多状态的完整代码中使用它时,它会产生问题。

L.G*_*L.G 9

试试这个解决方案,你可以减少更新次数:

onValueChange={value => {
  clearTimeout(this.sliderTimeoutId)
  this.sliderTimeoutId = setTimeout(() => {
    this.setState({value})
  }, 100)
}}
Run Code Online (Sandbox Code Playgroud)