Redux/toolkit TypeError: Cannot read properties of undefined (reading 'getState')

Redux/toolkit TypeError: Cannot read properties of undefined (reading 'getState')

我在我的应用程序中使用 redux/toolkit 和实体适配器。问题是,当我想将选择器添加到我的切片时,我得到了 undefined for store.getState();

我是根据 Redux Toolkit 文档写的。

driverReducer.ts

const driversAdapter = createEntityAdapter<Driver>({
  sortComparer: (a, b) => a.name.localeCompare(b.name),
});

export const DriverSlice = createSlice({
  name: "drivers",
  initialState: driversAdapter.getInitialState(),
  reducers: {
    setDrivers: driversAdapter.setAll,
    driverAdded: driversAdapter.addOne,
    driverUpdated: driversAdapter.updateOne,
    driverRemoved: driversAdapter.removeOne,
  },
});

const driversSelectors = driversAdapter.getSelectors<RootState>(state => state.drivers);
export const selectAllDrivers = driversSelectors.selectAll(store.getState());


export default DriverSlice.reducer;

store.ts

export const store = configureStore({
  reducer: {
    drivers:driverReduces,
  },
});

我该如何解决这个问题?

你在这里有一个循环依赖。

您的 store.ts 需要从 driverReducer.ts 导入 DriverSlice。 您的 driverReducer.ts 需要从 store.ts.

导入 store

一个文件只能被完全评估,所以两个文件都必须在另一个文件之前被评估,这是不可能的。

解决方案? 移动你的 export const selectAllDrivers = driversSelectors.selectAll(store.getState()); 到另一个文件。

另请注意,selectAllDrivers 将是在开始时评估 driversSelectors.selectAll(store.getState()) 一次的结果 - 因此它可能只是您的初始状态。这可能不是你想要的,但不是这个问题的真正主题。