alibaba-fusion / next

🦍 A configurable component library for web built on React.
https://fusion.design
MIT License
4.58k stars 584 forks source link

[CascaderSelect]支持useDetailValue、多选模式下透出selectedPath信息 #2188

Open youluna opened 4 years ago

youluna commented 4 years ago

Component

CascaderSelect

Feature Description

多选模式透出selectPath

在onChange的第三个参数重,透出selectPath(单选已支持,就不做改变),格式为对象

在业务场景下,级联选择数据量很大,查询时需要带上路径信息,例如“余杭区”,要带上[“浙江省”, “杭州市”, "余杭区"],在但选模式下已经支持,希望在多选模式下,onChange的第三个参数也暴露出这个信息,格式可以为 image

// extra. selectedPath 是一个对象,key为当前选中的元素的value,value是一个对象数组
// key为
{
 'yuhang': [{lable: '浙江省', value: 'zhejiang'}, {label: '杭州市', value: 'hangzhou'}],
 'xihu': [{lable: '浙江省', value: 'zhejiang'}, {label: '杭州市', value: 'hangzhou'}],
}

支持useDetailValue

组件的value defaultValue支持传对象、对象数组。对象需要包含label、value、selectedPath,

[{
  label: '余杭',
  value: 'yuhang',
  selectedPath: [{label: '浙江省', value: 'zhejiang'}, {label: '杭州市', value: 'hangzhou'}]
}]
youluna commented 4 years ago

https://riddle.alibaba-inc.com/riddles/a03261e6

youluna commented 4 years ago

image getValueFormatter 是把onChange的值改成传给field的值 setValueFormatter 是把filed传下来的值设置给组件,从demo上看setValueFormatter需要更多信息 @bindoon 看下如何加一下

bindoon commented 2 years ago

image getValueFormatter 是把onChange的值改成传给field的值 setValueFormatter 是把filed传下来的值设置给组件,从demo上看setValueFormatter需要更多信息 @bindoon 看下如何加一下

如果用户不是通过触发onChange 而是直接 setValue 更新了数据,setValueFormatter 还是拿到不到 onChange 的额外信息。感觉不太好处理

bindoon commented 2 years ago

组件是不是应该直接支持任意格式直接赋值给 CascaderSelect?组件应该对输入做最大兼容,但是输出格式永远一致的。

未来 useDetailValue 也就不需要写了,组件默认兼容对象格式?

bindoon commented 2 years ago

关联:https://github.com/alibaba-fusion/next/issues/1183 一起讨论