Javascript 如何在两个切片还原器redux toolkit之间共享数据

Javascript 如何在两个切片还原器redux toolkit之间共享数据,javascript,reactjs,redux,redux-toolkit,Javascript,Reactjs,Redux,Redux Toolkit,我有两个切片减速器,我想得到一个到另一个的状态。 按照redux的老方法,我会这样做: import store from "store" ///reducer code const state = store.getState(); 现在我正在使用redux工具包,而这种导入存储的方法不起作用 这是登录许可证: import { createSlice } from '@reduxjs/toolkit'; import axios from "axios

我有两个切片减速器,我想得到一个到另一个的状态。 按照redux的老方法,我会这样做:

import store from "store"

///reducer code

const state = store.getState();

现在我正在使用redux工具包,而这种导入存储的方法不起作用

这是登录许可证:


import { createSlice } from '@reduxjs/toolkit';
import axios from "axios"
import Swal from 'sweetalert2'

export const initialState = {
        id: "1111"
}
export const LoginSlice = createSlice({
  name: 'login',
  initialState,
  reducers: {
    login: state => {
       state.id = "2222"
    },
},
});


export const { login} = LoginSlice.actions;


这是一张照片:

import { createSlice } from '@reduxjs/toolkit';
import axios from "axios"


export const SitesSlice = createSlice({
  name: 'sites',
  initialState: {
    sites: []
  },
  reducers: {
    GetSites: (state,action) => {

        axios.post(process.env.REACT_APP_API_URL+"/sites/get",{id: get id here}).then((err,data) =>{
          if(data.data.success){
            state.sites = data.data.data
          }else{
            error
          }
      })
      .catch(error => {
         error
      })
  }
},
});


export const { GetSites } = SitesSlice.actions;


这是商店:


import { configureStore } from '@reduxjs/toolkit';
import { combineReducers } from 'redux'
import loginReducer from '../features/Login/loginSlice';
import siteReducer from '../features/Sites/SitesSlice';

const reducer = combineReducers({
  login: loginReducer,
    sites: siteReducer,
})

export default configureStore({
  reducer
});

我想做的是从登录切片到站点切片获取用户id。 类似于
store.getState().logIn.user.id

我在这方面有困难)

configureStore()函数返回的存储对象与您可以得到的存储对象相同,如下所示:

const store = configureStore({
  reducer
})
然后像平常一样使用它

store.getState()
您可能还希望导出存储

export default store;

你不应该在减速器内做任何副作用-这包括访问外部变量,如
状态
(正如穆罕默德·雅库布在回答中所建议的),以及执行
axios.post
,就像你在那里尝试的那样。(而且,这不仅是不应该做的事情——它也永远不会起作用)

这应该在一个中间件中完成,或者仅仅在thunk中完成。由于这是一个全新的蠕虫,远远超出了这个问题的范围,请参阅关于这个主题的官方redux教程: (如果您遵循此路径,您会注意到您可以从中间件thunks和
createasynchunk
中访问当前状态值,这也将回答您的问题)