react-vant
react-vant copied to clipboard
🐛 [Bug]: Cascader
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
数据为两层的时候 选择不了
数据有3层和2层 2层数据结构的时候 选择后 无法确认
onFinish 的触发条件不是根据 当前选择树的最大深度触发 而是根据 整个数据树的最大深度触发 比如 有一棵树 是 有1 2 3 3级 另外一个分支 只有 1 2两级 选择 1 和 2 之后 不能 触发onFinish
也是遇到这个问题了 楼上说的很对 是根据整个数据的最大深度触发的 所以完全可以抛弃 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)
}
}