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)
还有一件事是,当我只实现上面的滑块时,没有问题,但是当我在有许多状态的完整代码中使用它时,它会产生问题。
我正在尝试实现 Victor 条形图,当用户单击条形图时,我想在其中执行一些操作。但是当使用文档中给出的事件道具(使用文档中给出的相同示例代码)执行此操作时,但事件没有触发。您还可以使用此链接在 Snack.expo.io 上查看我的实现... ClickMe
软件包版本有:
"react-native-svg": "^9.4.0",
"victory-native": "^32.0.2",
"expo": "^33.0.0",
"react": "16.8.3",
"react-dom": "^16.8.6",
"react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
Run Code Online (Sandbox Code Playgroud)
这是相同的代码供您参考...
注意: 我还使用了“onPressIn”、“onClick”和“onPress”,但它们都不起作用。
<VictoryBar
data={[
{x: 1, y: 2, label: "A"},
{x: 2, y: 4, label: "B"},
{x: 3, y: 7, label: "C"},
{x: 4, y: 3, label: "D"},
{x: 5, y: 5, label: "E"},
]}
events={[
{
target: "data",
eventHandlers: {
onPressIn: () => {
return [{
target: "labels",
mutation: (props) => {
return props.text === "clicked" ? …Run Code Online (Sandbox Code Playgroud)