Antd 父子组件表单提交

这两天弄了下父子组件提交的问题,这里整理下。

1. 父组件中,引入子组件,对子组件执行React.forwardRef(子组件)来获取传递给它的 ref,

配置子组件:<Child ref={React.useRef(null)} />

主要代码如下:

const Child = forwardRef(FormItemTimeShedule);

{getFieldDecorator('scheduleList', {

        validateTrigger: ['onBlur'],

        rules: [

            {

                validator(_, value, callback) {

                    value.some(item => {

                        const errorMessage = childRef.current.getValidateError(item);

                        if (errorMessage) {

                            callback(errorMessage);

                            return true;

                        }

                        return false;

                    });

                    callback();

                }

            }

        ],

        initialValue: relativeLinkData

})(<Child ref={React.useRef(null)} {...itemProps}/>)}

2.子组件:

定义const FormItemTimeShedule = ( props, childRef) => {....}

使用useImperativeHandle定义暴露给父组件的参数;

  useImperativeHandle(childRef,()=>(

    getValidateError

  }))

//执行校验

const getValidateError = item => {

    let msg;

    validators.some(item => {

        if (!item.validator(startTime)) {

            msg = item.message;

            return true;

        }

        return false;

    });

    return msg;

};

主要还是卡在forwardRef和useImperativeHandle这里,注意React版本是16以上,我是写的函数式组件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容