代码之家  ›  专栏  ›  技术社区  ›  universe11

如果它的颜色名称相同,为什么不起作用?

  •  0
  • universe11  · 技术社区  · 3 年前

    我有个问题

    我的currentColor不为null,如果我按下一个颜色,我会将该颜色设置为currentColor,如果再次按下相同的颜色,则我会删除该颜色(我将currentColor设置为null)。但它不起作用

    const ModalProductSizeColor = forwardRef<BottomSheetModal, IModalProductSizeColor>(({ onPress }, ref) => {
      const navigation = useNavigation<NativeStackNavigationProp<RootStackParams>>();
    
      const [currentColor, setCurrentColor] = useState<ColorsOptions | null>(null);
      const [sizeScreen, setSizeScreen] = useState<boolean>(false);
    
      const snapPoints = useMemo(() => ['25%', 250], []);
    
      const handleSetCurrentColor = (color: ColorsOptions) => {
        console.log(currentColor + 'current in func');
        currentColor === color ? setCurrentColor(null)  : setCurrentColor(color)
      };
    
      console.log(currentColor);
      return (
        <BottomSheetModal
          ref={ref}         
          index={1}
          snapPoints={snapPoints}
          handleIndicatorStyle={[s.handleStyle, s.handleColorWhite]}
          backdropComponent={BottomSheetBackdrop}
        >
          <Text style={s.title}>test</Text>
    
            <Colors
              colors={ColorsData}
              onPress={handleSetCurrentColor}
              onLongPress={(x) => console.log(x)}
              containerStyle={s.containerStyle}
            />
          
          <View style={s.btnContainer}>
            <Pressable style={ButtonStyles.full}>
              <Text style={s.btnText}>Fertig</Text>
            </Pressable>
          </View>
        </BottomSheetModal>
      )
    });
    

    在我的函数中,当我console.log currentColor为null时,但在函数之外,它被设置了,我不再检查任何内容。我非常感谢你的帮助

    1 回复  |  直到 3 年前
        1
  •  1
  •   RubenSmn    3 年前

    假设您 Colors 组件通过 color 到您的 handleSetCurrentColor ,您可以尝试设置 currentColor 这样地

    ...
    console.log(currentColor + 'current in func');
    setCurrentColor(prevCurrentColor => prevCurrentColor === color ? null : color)
    ...
    
    推荐文章