проблема с отправкой действия вне компонента в наборе инструментов redux

#reactjs #typescript #redux-toolkit

#реагирует на #машинописный текст #redux-инструментарий

Вопрос:

Я создал проект с машинописным текстом redux toolkit, и все было в порядке, пока я не захотел отправить действие за пределы компонента. Я использовал store.dispatch(removeToken()), но как только строка будет запущена, она выдает ошибку : Ошибка типа: Не удается прочитать свойства неопределенного (чтение «Начальная загрузка»)

Я использовал redux вот так (index.tsx):

 ReactDOM.render(  lt;Provider store={store}gt;  lt;App /gt;  lt;/Providergt;,  document.getElementById('root') );   

и создал файл store.tsx :

 export const store = configureStore({  reducer:{  adminLogin: adminLoginReducer,  userRequests: userRequestsReducer,  } }); export type RootState = ReturnTypelt;typeof store.getStategt; export type AppDispatch = typeof store.dispatch  

и создал loginstore.tsx (reudcer) вот так:

 export const adminLoginThunk = createAsyncThunk(  "adminLoginThunk",  async (arg:{  body: RequestType_AdminLogin,   unmounted: React.MutableRefObjectlt;booleangt;,   cancellationToken: CancelToken  },thunkAPI) =gt; {  return await callAPIlt;ResponseType_AdminLogingt;  ("paneladmin/login",'post',{},arg.body,[],{},arg.unmounted,arg.cancellationToken).then(res=gt;res.data.Result);  } );  export interface AdminLoginState {  token:string,  loading: boolean,  InitialLoad:boolean  }   const initialState = {  token:"",  loading:false,  InitialLoad:false } as AdminLoginState;    const adminSlice = createSlice({  name: "AdminLoginState",  initialState,  reducers:{  getToken: (state) =gt; {  state.token = localStorage.getItem('token') || "";  state.InitialLoad = true;  },  removeToken: (state) =gt; {  localStorage.removeItem('token');  state.token = "";  },  },  extraReducers: (builder) =gt; {  builder.addCase(adminLoginThunk.pending, (state, action:PayloadActionlt;anygt;) =gt; {  state.loading = true  });  builder.addCase(adminLoginThunk.fulfilled, (state, action:PayloadActionlt;anygt;) =gt; {  state.loading = false;  localStorage.setItem("token",action.payload)  state.token = action.payload as string;  });  builder.addCase(adminLoginThunk.rejected, (state, action:PayloadActionlt;anygt;) =gt; {  state.loading = false;  })  } });    export const { getToken, removeToken } = adminSlice.actions  export default adminSlice.reducer;  

и я использовал эти две строки в компоненте app.tsx(ошибка связана с начальной загрузкой) :

 const InitialLoad = useSelector((state:RootState) =gt; state.adminLogin.InitialLoad);  const dispatch = useDispatch();