В React ComponentetDidUpdate () метод жизненного цикла вызывается несколько раз в шаблоне рендеринга. - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь использовать шаблон рендеринга проп, чтобы улучшить повторное использование кода, для этого я следую за компонентом рендеринга пропуска (R), который содержит методы жизненного цикла, а также clickHandler из FC (F), который выполняет некоторую обработку и обновляет редуксхранить.Я использую компонент рендеринга (R) внутри (A) компонента 3 раза с разными реквизитами.Как только я использую clickHandler из FC, он вызывает метод из компонента render prop (R) и обновляет хранилище, но метод componentDidUpdate () в компоненте render prop (R) также вызывается 3 раза, что не должно происходить, его следует вызывать толькоодин раз.Нет способа узнать и узнать, какой ClickHandler обновил магазин.

ComponentDidUpdate и handleUpload в компоненте рендеринга пропеллера (R)


/**
 * @remarks
 * call the `{uploadApiDispatcher}` with upload type and required params
 */
    handleUpload() {
        const { uploadApiDispatcher, uploadType } = this.props;
        const params: IUploadApiActionProp = {
            data: { name: 'sanjose' },
            fileIds: [1],
            uploadType,
        };
        uploadApiDispatcher(params);
    }

componentDidUpdate(prevProps, prevState) {
        const { remarks, uploadErrorMessage, uploading, uploadType } = this.props
        if(uploadType !== prevProps.uploadType){
            if (!uploading && remarks && remarks.length) {
            }
            if (!uploading && uploadErrorMessage) {
                message.error(uploadErrorMessage);
            }
        }
    }

использование функции рендеринга пропеллера (UploadRender) в компоненте (A)

<Col xs={24} sm={24} md={12} lg={8} xl={6}>
                                    <UploadRender
                                        render={props => (
                                            <UploadCard
                                                title="Upload admin users"
                                                subtitle="This will upload the admin users"
                                                {...props}
                                            />
                                        )}
                                        uploadType={uploadTypes.UPLOADADMINUSERS}
                                    />
                            </Col>
                            <Col xs={24} sm={24} md={12} lg={8} xl={6}>

                                    <UploadRender
                                        render={props => (
                                            <UploadCard
                                                title="Upload admin group"
                                                subtitle="This will upload the admin groups"
                                                {...props}
                                            />
                                        )}
                                        uploadType={uploadTypes.UPLOADADMINGROUPS}
                                    />
                            </Col>
                            <Col xs={24} sm={24} md={12} lg={8} xl={6}>

                                    <UploadRender
                                        render={props => (
                                            <UploadCard
                                                title="Upload internal users"
                                                subtitle="This will upload the internal users"
                                                {...props}
                                            />
                                        )}
                                        uploadType={uploadTypes.UPLOADINTERNAL}
                                    />
                            </Col>

Пожалуйста, помогите мне понять, что componentDidUpdate вызывается несколько раз, и как я могу узнать, какой вызывается clickHandler.

...