File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -72,6 +72,45 @@ function RenderChildrenDemo() {
7272 )
7373}
7474
75+ // 手动控制选中值
76+ function SelectedDemo ( ) {
77+ const [ value , setValue ] = useState < ( string | null ) [ ] > ( [ ] )
78+
79+ const [ selectValue , setSelectValue ] = useState < ( string | null ) [ ] > ( [ ] )
80+ return (
81+ < Picker
82+ columns = { basicColumns }
83+ value = { value }
84+ title = {
85+ < div
86+ onClick = { ( ) => {
87+ setSelectValue ( [ 'Fri' , 'pm' ] )
88+ } }
89+ >
90+ 设置为星期五下午
91+ </ div >
92+ }
93+ selectValue = { selectValue }
94+ onConfirm = { setValue }
95+ onSelect = { ( val , extend ) => {
96+ console . log ( 'onSelect' , val , extend . items )
97+ setSelectValue ( val )
98+ } }
99+ >
100+ { ( items , { open } ) => {
101+ return (
102+ < Space align = 'center' >
103+ < Button onClick = { open } > 选择</ Button >
104+ { items . every ( item => item === null )
105+ ? '未选择'
106+ : items . map ( item => item ?. label ?? '未选择' ) . join ( ' - ' ) }
107+ </ Space >
108+ )
109+ } }
110+ </ Picker >
111+ )
112+ }
113+
75114export default ( ) => {
76115 return (
77116 < >
@@ -83,6 +122,10 @@ export default () => {
83122 < RenderChildrenDemo />
84123 </ DemoBlock >
85124
125+ < DemoBlock title = '使用 selectValue 来控制选择值' >
126+ < SelectedDemo />
127+ </ DemoBlock >
128+
86129 < DemoBlock title = '使用 actions 来控制显示/隐藏' >
87130 < Space direction = 'vertical' block >
88131 < ActionsDemo />
Original file line number Diff line number Diff line change @@ -130,7 +130,15 @@ export const Picker = memo(
130130
131131 const extend = useColumnsExtend ( props . columns , value )
132132
133- const [ innerValue , setInnerValue ] = useState < PickerValue [ ] > ( value )
133+ const [ innerValue , setInnerValue ] = usePropsValue ( {
134+ value : props . selectValue ,
135+ defaultValue : value ,
136+ onChange : val => {
137+ const extend = generateColumnsExtend ( props . columns , val )
138+ props . onSelect ?.( val , extend )
139+ } ,
140+ } )
141+
134142 useEffect ( ( ) => {
135143 if ( innerValue !== value ) {
136144 setInnerValue ( value )
You can’t perform that action at this time.
0 commit comments