reactjs - Typescript npm-bibliotek kan ikke eksportere Redux-store, vennligst gi råd


Jeg bruker Notistack-biblioteket og har laget en fork av det, og bruker deretter VSCode for å prøve å legge til en Redux-butikk i biblioteket som jeg vil eksponere for apper.

Jeg er ikke så flink med Typescript. Jeg har litt problemer hehe.

Det jeg vil gjøre er at når appen bruker Notistack for å vise en snack-melding. Jeg vil bruke Redux for å oppdatere meldingen i sanntid, som en filopplasting/nedlastingsprogresjon som vises på snacken. Det er her Notistack nye Redux-store (som jeg lager her) kommer inn i bildet. Jeg vil at Notistack skal eksponere Redux-storen til appen slik at appen kan sende redux dispatch inn til Notistack Redux Store, og vise dispatched meldinger i Notistack SnackbarItem.tsx
(håper du forstår)

Når jeg kompilere i VSCode får jeg denne feilen i appen min:

Failed to compile.

./src/redux/root-reducer.js
Attempted import error: 'notistack' does not contain a default export (imported as 'NotisReducer'). 

Min rot-reducer i appen ser slik ut:

import { combineReducers } from 'redux';
import NotisReducer from 'notistack';
import snackReducer from './snackbar/snack.reducer';

const rootReducer = combineReducers({
    snack: snackReducer,
    NotisReducer,
});
export default rootReducer;

Som du ser importerer jeg Notistacks NotisReducer og jeg tror jeg har implementert det.

(Jeg har brukt NPM-lenke for å legge til lokalt forked Notistack-bibliotek i appen min)

Nå ser det ut som dette her er Notistacks index.js-fil hvor jeg eksponerer Redux-store som NotisReducer:

Det jeg gjorde i Notistack var at jeg la til en i index.d.ts:

Jeg definerer typen store slik:

import * as React from 'react';
import { SnackbarClassKey } from '@material-ui/core/Snackbar';
import { ClickAwayListenerProps } from '@material-ui/core/ClickAwayListener';
import { TransitionProps } from '@material-ui/core/transitions/transition';
import { StandardProps } from '@material-ui/core';
import store from './Redux/store'; // MY STORE
...
...
export type store = store; // EXPORT IT

Jeg er ikke sikker på om dette er korrekt, da jeg ikke kunne sette et breakpoint i npm-linkede Notistack. Kanskje det er for mange problemer nå som må fikses først.

I filen
SnackbarProvider.tsx
gjorde jeg det slik, ved å importere store-typen fra index.d.ts):

import {
  SnackbarProviderProps,
  SnackbarKey,
  SnackbarMessage,
  OptionsObject,
  RequiredBy,
  ProviderContext,
  TransitionHandlerProps,
  store, //  STORE
} from ".";
import createChainedFunction from "./utils/createChainedFunction";

export { store }; // EXPOSING IT 

I filen
NotisReducer.js
importerer jeg store for å bli sendt til indext.js ovenfor

Men som du så ovenfor får jeg kompilatorfeil, store er ikke eksportert.

Attempted import error: 'notistack' does not contain a default ex (imported as 'NotisReducer'). 

vær så snill og gi råd :))

Relaterte artikler