Как настроить unistore с помощью nextjs и постоянного состояния, сохраненного в файлах cookie? - PullRequest
0 голосов
/ 23 мая 2019

Как настроить unistore с помощью next-js, включая SSR и постоянное состояние в файлах cookie? Причина постоянного состояния файлов cookie заключается в том, что моя корзина сохраняется только в файлах cookie, а не на сервере.

Я пытался с HOC с-Unistore, который выглядит следующим образом. Перезапись:

const isServer = typeof window === 'undefined';
const __STATE__ = '__UNISTORE_STATE__';

const initializeStore = (initialState) => createStore(initialState);

function getOrCreateStore(initialState) {
    if (isServer) {
        return initializeStore(initialState);
    }

    if (!window[__STATE__]) {
        window[__STATE__] = initializeStore(initialState);
    }
    return window[__STATE__];
}

export default (App) => {
    return class AppWithUnistore extends React.Component {
        static async getInitialProps(appContext) {
            const uniStore = getOrCreateStore({ count: 0 });

            appContext.ctx.store = uniStore;

            let appProps = {};
            if (typeof App.getInitialProps === 'function') {
                appProps = await App.getInitialProps(appContext);
            }

            return {
                ...appProps,
                initialUniStoreState: uniStore.getState()
            };
        }

        constructor(props) {
            super(props);
            this.uniStore = getOrCreateStore(props.initialUniStoreState);
        }

        render() {
            return <App {...this.props} uniStore={this.uniStore} />;
        }
    };
};

Но он возвращает ошибку: Ошибка при выполнении getInitialState Ошибка типа: невозможно прочитать свойство 'action' из неопределенного

function Home({ count, increment }) {
    return (
        <Frame>
            Welcome hello Next.js!
            <div>{count}</div>
            <button onClick={increment}>INCREMENT</button>
        </Frame>
    );
}

export default connect('count', actions)(Home);

Кто-нибудь может привести рабочий пример?

...