reactjs - Transmiterea dispatch-ului useReducer ca prop în TypeScript, ce tip să folosesc?


const [state, dispatch] = useReducer(reducer, initialState);

return (
<Component dispatch={dispatch} />
)

// component file
const Component = ({dispatch}: ???) => ..... 

Ce ar trebui să pun la semnele de întrebare?

Răspuns #1

Verifică @types/react. Putem vedea că există mai multe definiții suprascrise ale useReducer, dar va returna tipul Dispatch: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts#L876

Poți importa Dispatch din 'react'.

Rețineți că Dispatch este generic. Tipul generic reprezintă valorile posibile pentru acțiunile trimise. Este alegerea dvs. să le definiți, dar reducer-urile folosesc în mod obișnuit action.type.

import { Dispatch, FunctionComponent } from 'react';

interface ComponentProps {
  dispatch: Dispatch<{ type: string }>
}

const Component: FunctionComponent<ComponentProps> = ({ dispatch }) =>