Как подключить Redux к Классовому компоненту Next.js

Доброго времени суток!

Потратил уже 4 дня на попытку выстроить адекватную структуру сайта HOC + Layout + pages. И теперь не получается подключить к HOC redux через connect. Буду очень благодарен за вашу помощь в решении этого вопроса!!! Привел весь возможный код который затрагивается в работе этого шаблона. Брал основу я с этой статьи :

Persistent Layout Patterns in Next.js

Я получаю ошибку:

Error: You must pass a component to the function returned by connect. Instead received {"key":null,"ref":null,"props":{"children":{"key":null,"ref":null,"props":{"children":{"type":{"compare":null,"displayName":"Connect(Panel)"},"key":null,"ref":null,"props":{"Component":{"compare":null,"displayName":"Connect(Panel)"},"router":{"route":"/test","pathname":"/test","query":{},"asPath":"/test","basePath":"","isFallback":false},"pageProps":{}},"_owner":null,"_store":{}}},"_owner":null,"_store":{}}},"_owner":null,"_store":{}}

HOC:

import React, { Component } from 'react'
import Router from 'next/router'
import { connect } from 'react-redux';

class WithAdmin extends Component {
    constructor(props) {
        super(props)

        this.state = {
        }
    }

    componentDidMount() {
    }
    render() {
        return (
            <div><h1>{this.props.token}</h1>{this.props.children}</div>
        )
    }
}

const mapState = state => ({
    token: state.auth.token,
})

const mapDispatch = dispatch => ({
    getAccount: (token) => dispatch(getAccountAction(token))
})

export const getLayout = page => connect(mapState, mapDispatch)(<WithAdmin>{page}</WithAdmin>)

Если заменяю это

export const getLayout = page => connect(mapState, mapDispatch)(<WithAdmin>{page}</WithAdmin>)

на это:

export const getLayout = page => <WithAdmin>{page}</WithAdmin>

все работает отлично только вот данные с стора я получить не могу =(

Layout:

import { getLayout as getSiteLayout } from './WithAdmin'

const AccountSettingsLayout = ({ children }) => (
  <div><h2>middleware_layout_2</h2>{children}</div>
)

export const getLayout = page => getSiteLayout(<AccountSettingsLayout>{page}</AccountSettingsLayout>)

По хорошему и в HOC и в Layout мне надо подключить redux...

на всякий случай привожу свой _app.js и пример страницы.

app:

import App from 'next/app';
import { Provider } from 'react-redux';
import store from 'store';
import { SnackbarProvider } from 'notistack';

class MyApp extends App {
    render() {
        const { Component, pageProps } = this.props
        const getLayout = Component.getLayout || (page => page)
        console.log(getLayout)

        return (
            <Provider store={store}>
                <SnackbarProvider>
                    {getLayout(<Component {...this.props} />)}
                </SnackbarProvider>
            </Provider>
        )
    }
}

export default MyApp

example page:

import { getLayout } from 'middleware/AdminLayout'
import { connect } from 'react-redux';
import { Component } from 'react'

class Panel extends Component {
    async componentDidMount() {

    }
    render() {
        return (
            <div><h1>Test</h1></div>
        )
    }
}

Panel.getLayout = getLayout

const mapState = state => ({
    test: state.account.test
})
const mapDispatch = dispatch => ({

})

export default connect(mapState, mapDispatch)(Panel)

Ответы (0 шт):