All Downloads are FREE. Search and download functionalities are using the official Maven repository.

core.widget.WidgetHOC.jsx Maven / Gradle / Ivy

The newest version!
import React, { useEffect } from 'react'

import { registerDependency } from '../../actions/dependency'

import { WithDataSource } from './WithDataSource'
import { widgetPropTypes } from './propTypes'
import { withRedux } from './withRedux'
import { FETCH_TYPE } from './const'

/**
 * ХОК для получения параметров в виджет из DataSource и методов взаимодействия с ним
 */

/**
 * @type {Function}
 */
export const WidgetHOC = (WidgetComponent) => {
    /**
     * Обёртка, осуществляющая запрос за данными при смене видимости виджета
     * и прокидыванием методов взаимодействия с DataSource в контекст
     */
    const Widget = (props) => {
        const {
            id,
            dependency,
            dispatch,
            visible = true,
        } = props

        useEffect(() => {
            dispatch(registerDependency(id, dependency))
        }, [id, dispatch, dependency])

        if (!visible) {
            return null
        }

        return 
    }

    Widget.propTypes = widgetPropTypes

    const WithDataSourceWidget = WithDataSource(Widget)

    WithDataSourceWidget.defaultProps = {
        fetchOnInit: true,
        fetchOnVisibility: true,
        fetch: FETCH_TYPE.always,
        visible: true,
        isInit: false,
    }

    return withRedux(WithDataSourceWidget)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy