我正在使用react-native-ui-kitten中的RkSwitch组件。该包只是我可以使用的一堆ui组件。

开发人员不再支持该组件,并且我的RkSwitch组件无法正常运行。

我的问题是RkSwitch的onValueChange不执行任何操作。

render function for android
render function for iOS
我叫RkSwitch。由于RkSwitch是react native的<Animated.View>的包装类,因此它无法传递onValueChange。

<RkSwitch
    style={styles.switch}
    value={this.state.onlyMe}
    name="Push"
    onValueChange={
        (onlyMe) => {
            console.log('helloworld'); // it can't print helloworld
        }
    }
/>


这是RkSwitch的实际代码。 (这是android版本)。
Doc Link

_onPanResponderRelease = (evt, gestureState) => {
    let {toggleable} = this.state;
    let {disabled, onValueChange} = this.props;

    if (toggleable && !disabled) {
      if (onValueChange) { // calls onValueChange and..?
        this.toggleSwitch(onValueChange) // call toggle switch
      }
    }
  };

toggleSwitch = (result, callback = () => null) => {
    let {value, switchAnimation} = this.state;
    let toValue = !value;

    this.animateHandler(this.handlerSize);

    this.animateSwitch(toValue, () => {
      callback(toValue);
      this.setState({
        value: toValue,
        left: toValue ? onLeftValue : offLeftValue
      });
     switchAnimation.setValue(toValue ? -1 : 1)
    })


看来他们正在处理onValueChange道具,但不起作用。有没有好的Javascript或React专家???

最佳答案

我没有尝试过,但是也许进入RKSwitch代码并在Animated.View周围添加<TouchableOpacity>并将onValueChange道具输入到TouchableOpacity的onPress函数中。

10-07 17:41