react-vant icon indicating copy to clipboard operation
react-vant copied to clipboard

🐛 [Bug]: Cascader

Open MyIsAChaYeDan opened this issue 11 months ago • 3 comments

Which React Vant packages are impacted?

  • [x] react-vant (React Vant core)
  • [ ] react-vant-icons(React Vant Icon)

What version of React Vant are you using?

3.3.5

Reproduce live demo(codesandebox or stackblitz)?

No response

Descripition

数据为两层的时候 选择不了

MyIsAChaYeDan avatar Feb 13 '25 05:02 MyIsAChaYeDan

数据有3层和2层 2层数据结构的时候 选择后 无法确认

MyIsAChaYeDan avatar Feb 13 '25 05:02 MyIsAChaYeDan

onFinish 的触发条件不是根据 当前选择树的最大深度触发 而是根据 整个数据树的最大深度触发 比如 有一棵树 是 有1 2 3 3级 另外一个分支 只有 1 2两级 选择 1 和 2 之后 不能 触发onFinish

MyIsAChaYeDan avatar Feb 13 '25 05:02 MyIsAChaYeDan

也是遇到这个问题了 楼上说的很对 是根据整个数据的最大深度触发的 所以完全可以抛弃 onFinish 拥抱 onChange 下面是解决方案

const handleCascaderChange = (vals: string[], selectedOptions: any[]) => {
    console.log(vals, selectedOptions)
    setSelectedValue(vals)

    // 检查最后选中的节点是否是叶子节点(没有 children)
    const lastOption = selectedOptions[selectedOptions.length - 1]
    const isLeafNode = !lastOption?.children || lastOption.children.length === 0

    // 如果是叶子节点,立即触发 onChange 并关闭选择器
    if (isLeafNode && vals.length > 0) {
      const finalValue = vals[vals.length - 1] || ""
      onChange?.(finalValue, lastOption)
      setShowPicker(false)
    }
  }

ztzzhi avatar Nov 20 '25 02:11 ztzzhi