javascript - Vad är den korrekta typdeklarationen för React-kontextfunktioner för att undvika lintingproblem?


Jag använder React Context och jag har:

const DocumentContext = createContext<
    [DocumentStateType, React.Dispatch<any>, React.Dispatch<any>]
>([initVal, () => { }, () => { }]);

Men min linter klagar:

Unexpected empty arrow function @typescript-eslint/no-empty-function

Jag vet att jag kan stänga av det i mina lintningsinställningar, men finns det ett korrekt sätt att göra det på?

Svar #1

Om du bara vill undertrycka linter-meddelanden kan du deklarera det som:

const DocumentContext = createContext<
    [DocumentStateType, React.Dispatch<any>, React.Dispatch<any>]
>([initVal, () => { /* do nothing */ }, () => { /* do nothing */ }]);

eller som:

const DocumentContext = createContext<
    [DocumentStateType, React.Dispatch<any>, React.Dispatch<any>]
>([initVal, () => undefined, () => undefined]);

Om du är helt säker på att du inte kommer att använda detta standardvärde någonstans, det vill säga att du inte har komponenter som använder detta sammanhang utöver detta sammanhangs leverantör, kan du helt enkelt definiera det som:

const DocumentContext = createContext<
    [DocumentStateType, React.Dispatch<any>, React.Dispatch<any>]
>(null as any);

Svar #2

Du kan använda alternativet allowArrowFunctions

Dokumentation

"@typescript-eslint/no-empty-function": ["error", {"allow": ["arrowFunctions"]}],

Relaterade artiklar