订户数组在HOC withUser中做什么?

时间:2018-06-29 16:20:52

标签: javascript node.js reactjs ecmascript-6 redux

正如标题所说,我不理解这段代码中的订阅者是什么。

import React from "react";

const stateFromStore = sessionStorage.getItem('user');

let state = stateFromStore ? JSON.parse(stateFromStore) : null;

const subscribers = [];

const unsubscribe = subscriber => {
    const index = subscribers.findIndex(subscriber);
    index >= 0 && subscribers.splice(index, 1);
};
const subscribe = subscriber => {
    subscribers.push(subscriber);
    return () => unsubscribe(subscriber);
};

export const withUser = Component => {
    return class WithUser extends React.Component {
        componentDidMount() {
            this.unsubscribe = subscribe(this.forceUpdate.bind(this));
        }
        render() {
            const newProps = { ...this.props, user: state };
            return <Component {...newProps} />;
        }
        componentWillUnmount() {
            this.unsubscribe();
        }
    };
};
export const update = newState => {
    state = newState;
    sessionStorage.setItem('user', state ? JSON.stringify(state) : null);
    subscribers.forEach(subscriber => subscriber());
};

我了解有关sessionStorate的内容,但是我不了解订阅者数组的用法。

这是关于如何使用带有反应https://github.com/HackedByChinese/passport-examples/tree/master/example-simple-react/client/src的护照的示例的一部分

0 个答案:

没有答案