vant icon indicating copy to clipboard operation
vant copied to clipboard

[Bug Report] Slider 组件的 `step` 值相对较大时,组件可能返回超出 `max` 范围的值

Open phil668 opened this issue 4 months ago • 3 comments

Reproduction Link

https://codesandbox.io/p/devbox/vant-4-issue-template-forked-fw7zr3

Vant Version

4.9.21

Describe the Bug

问题描述

当 Slider 组件的 step 值相对较大时,format 函数可能返回超出 max 范围的值

Reproduce Steps

复现步骤

  1. 配置 Slider 组件:min=20, max=100, step=30
  2. 将滑块拖拽到最右边
  3. 观察返回的格式化值
<template>
  <van-slider v-model="value" :min="20" :max="100" :step="30" />
  <p>当前值:{{ value }}</p>
</template>

<script setup>
import { ref } from 'vue'
const value = ref(0) 
</script>

实际行为

拖动到最右侧时,value为110,超过了最大值100

期望行为

拖动到最右侧时,组件不应该返回超过max的值

我想提一个pr修复该问题,但当 min=20, max=100, step=30 时,存在两种可能的设计方案:

严格按 step 规律

  • 合法值20, 50, 80

包含 max 值

  • 合法值20, 50, 80, 100

请问哪种结果符合Slider组件的功能预期?

Device / Browser

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36

phil668 avatar Sep 14 '25 03:09 phil668

应该包含 max 值

inottn avatar Sep 17 '25 06:09 inottn

应该包含 max 值

@inottn @chenjiahan I submitted a pull request for this issue, could you take a look? https://github.com/youzan/vant/pull/13632

lllomh avatar Sep 17 '25 13:09 lllomh

yes, i also get this bug

OwenGitHub1 avatar Nov 17 '25 02:11 OwenGitHub1