I am writing Frontend Tests for React Components in TypeScript. Since the Code is from a more experienced Programmer, some Datatypes seem a bit new for me. Now I've got a prop that is defined with "Dispatch<SetStateAction>" as datatype. I've noticed that using the set-property of a useState-Hook is working, but I'm not really sure if this is how the prop is supposed to be used. For reference: The prop is called "onFullScreenClick". I'd be very grateful for an explanation and an example for what's most likely to be put in
CodePudding user response:
If you look at the source of the typings:
type SetStateAction<S> = S | (prevState: S) => S;
type Dispatch<A> = (action: A) => void;
Dispatch takes an action as a parameter and returns nothing.
There are multiple types of actions, and one of them is SetStateAction.
Remember that useState can take a new state, or a function that takes the previous state and returns the new state.
So useState's type is actually:
type UseState<S> = (action: S | ((prevState: S) => S)) => void;
CodePudding user response:
It's just a way telling typescript, the type of the props we are passing in
Take a look at this simply counter example from sandbox
We have const [num, setnum] = useState(0) in the parent, and we pass both state and setter function to child component
The type of the num is infered from useState(0), if we want the type of the setter function, we just hover mouse over it, and we get
const setNum: Dispatch<SetStateAction<number>>
and this Dispatch<SetStateAction<number>> is the type of setter function.
