Javascript 如何从库访问redux存储?

Javascript 如何从库访问redux存储?,javascript,reactjs,react-native,redux,Javascript,Reactjs,React Native,Redux,我正在为我的react应用程序创建一个库,该库将处理与会话相关的每个API调用(身份验证、注册、刷新令牌等),该库需要自己访问redux存储以分派操作。 这背后的原因是每当用户的访问令牌过期时,我需要使用setTimeout调用一个action creator,它将调用我的API来刷新令牌,并使用新的会话数据更新应用程序redux存储 因此,每当我第一次调用dispatch方法时,我就想将它传递给库,但我不确定这是最好的方法 或者我也可以创建一个initialize()方法,将分派传递给库 im

我正在为我的react应用程序创建一个库,该库将处理与会话相关的每个API调用(身份验证、注册、刷新令牌等),该库需要自己访问redux存储以分派操作。 这背后的原因是每当用户的访问令牌过期时,我需要使用setTimeout调用一个action creator,它将调用我的API来刷新令牌,并使用新的会话数据更新应用程序redux存储

因此,每当我第一次调用dispatch方法时,我就想将它传递给库,但我不确定这是最好的方法

或者我也可以创建一个
initialize()
方法,将分派传递给库

import { authenticate } from 'libraries/session';

export function login(email, password) {
    return (dispatch) => {
        dispatch(loginRequest());

        return authenticate(email, password, dispatch) // dispatch is passed here, so I can use it later in the library
        .then(() => (
            dispatch(loginSuccess())
        ))
        .catch((json) => (
            dispatch(loginError());
        ));
    };
};
我还没有尝试过这段代码,现在更像是头脑风暴

你有什么最好的处理方法的建议吗


谢谢

我的冲动是交换参数:

import { authenticate } from 'libraries/session';


export function configureLogin(store) {
    var {dispatch, subscribe, getState} = store;
    return (email, password) => {
        dispatch(loginRequest());

        return authenticate(email, password, dispatch) // <- I don't why dispatch needs to be included, but I'll take ur word for it
        .then(() => dispatch(loginSuccess())
        .catch(json => dispatch(loginError()));
    };
};

// usage
import { configureLogin } from './service/login';
var store = createStore();
var login = configureLogin(store);
login(email, password);
从“库/会话”导入{authenticate};
导出功能配置登录(存储){
var{dispatch,subscribe,getState}=store;
返回(电子邮件、密码)=>{
调度(loginRequest());
返回authenticate(电子邮件、密码、分派)//分派(loginsucess())
.catch(json=>dispatch(loginError());
};
};
//用法
从“./service/login”导入{configureLogin};
var store=createStore();
var login=configureLogin(存储);
登录(电子邮件、密码);

您是否考虑过将其作为一个中间件来完成?我考虑过这一点,但不知道如何使用中间件来完成,举个例子就好了!我终于做了类似的事情了,谢谢!:)