@@ -726,4 +726,81 @@ describe('Form.Basic', () => {
726726 wrapper . find ( 'Input' ) . simulate ( 'change' , { event : { target : { value : 'Light' } } } ) ;
727727 } ) . not . toThrowError ( ) ;
728728 } ) ;
729+
730+ it ( 'setFieldsValue for List should work' , ( ) => {
731+ const Demo = ( ) => {
732+ const [ form ] = useForm ( ) ;
733+
734+ const handelReset = ( ) => {
735+ form . setFieldsValue ( {
736+ users : [ ] ,
737+ } ) ;
738+ } ;
739+
740+ const initialValues = {
741+ users : [ { name : '11' } , { name : '22' } ] ,
742+ } ;
743+
744+ return (
745+ < Form
746+ form = { form }
747+ initialValues = { initialValues }
748+ name = "dynamic_form_nest_item"
749+ autoComplete = "off"
750+ >
751+ < Form . List name = "users" >
752+ { ( fields , { add, remove } ) => (
753+ < >
754+ { fields . map ( ( { key, name, ...restField } ) => (
755+ < Field
756+ key = { key }
757+ { ...restField }
758+ name = { [ name , 'name' ] }
759+ rules = { [ { required : true , message : 'Missing name' } ] }
760+ >
761+ < Input placeholder = "Name" />
762+ </ Field >
763+ ) ) }
764+ </ >
765+ ) }
766+ </ Form . List >
767+ < Field >
768+ < button className = "reset-btn" onClick = { handelReset } >
769+ reset
770+ </ button >
771+ </ Field >
772+ </ Form >
773+ ) ;
774+ } ;
775+
776+ const wrapper = mount ( < Demo /> ) ;
777+ expect ( wrapper . find ( 'input' ) . first ( ) . getDOMNode ( ) . value ) . toBe ( '11' ) ;
778+ wrapper . find ( '.reset-btn' ) . first ( ) . simulate ( 'click' ) ;
779+ expect ( wrapper . find ( 'input' ) . length ) . toBe ( 0 ) ;
780+ } ) ;
781+
782+ it ( 'setFieldsValue should work for multiple Select' , ( ) => {
783+ const Select = ( { value, defaultValue } ) => {
784+ return < div className = "select-div" > { ( value || defaultValue || [ ] ) . toString ( ) } </ div > ;
785+ } ;
786+
787+ const Demo = ( ) => {
788+ const [ formInstance ] = Form . useForm ( ) ;
789+
790+ React . useEffect ( ( ) => {
791+ formInstance . setFieldsValue ( { selector : [ 'K1' , 'K2' ] } ) ;
792+ } , [ formInstance ] ) ;
793+
794+ return (
795+ < Form form = { formInstance } >
796+ < Field initialValue = "K1" name = "selector" >
797+ < Select />
798+ </ Field >
799+ </ Form >
800+ ) ;
801+ } ;
802+
803+ const wrapper = mount ( < Demo /> ) ;
804+ expect ( wrapper . find ( '.select-div' ) . text ( ) ) . toBe ( 'K1,K2' ) ;
805+ } ) ;
729806} ) ;
0 commit comments