2022-06-20
                
            WebStorm Live Templates
A small collection of WebStorm "Live Templates" (tab-expandable snippets) that have been useful to me at least a handful of times – in many cases a lot more.
The header for each snippet includes the keyword I used. Often there are multiple related snippets that have similarly structured keywords.
WebStorm supports a lot of useful markers and functions to quickly fill in the snippets if needed. Most of them are pretty self explanatory, and all of them are detailed here.
Table of contents
React components
rcp / React children (TypeScript) prop type 
children: ReactNoderfc / React interfaced functional component 
import React from "react";
interface $TM_FILENAME_BASE$Props {
}
export const $TM_FILENAME_BASE$ = ({$PROPS$}: $TM_FILENAME_BASE$Props) => {
    return (
        <div>
            $END$
        </div>
    );
};
Vars:
- Default value: fileNameWithoutExtension()(ALSO USED IN OTHERS BELOW)
rfcc / React interfaced functional component -- compact 
interface $TM_FILENAME_BASE$Props {
}
const $TM_FILENAME_BASE$ = ({$PROPS$}: $TM_FILENAME_BASE$Props) => {
    return (
        <div>
            $END$
        </div>
    );
};
rfccc / React interfaced functional component -- MORE compact 
const $TM_FILENAME$ = ({children}: $PROPS$) => {
    return (
        <div>
            $END$
        </div>
    );
};
React hooks
rhc / React Hooks: useCallback 
const $name$ = useCallback(($params$) => $callback$, [$deps$]);
rhd / React Hooks: useDispatch 
const dispatch = useDispatch();rhl / React Hook: Log: log a variable in a useEffect 
Note: Consider including // TODO: remove, as this should surely never ever be comitted
useEffect(() => {
    console.log("$LOGGED_VARIABLE$:", $LOGGED_VARIABLE$);
}, [$LOGGED_VARIABLE$]);rhs / React Hooks: useState 
const [$variable$, set$Variable$] = useState<$type$>($defaultValue$);
rhsel / React REDUX Hook: useSelector 
const $var$ = useSelector(($storeName$: $storeType$) => $storeFetched$);
Styling
stc / Styled component 
const $NAME$ = styled.$TAG$`
    $END$
`;stcp / Styled component, with props 
const $NAME$ = styled.$TAG$<$PROPS$>`
    $END$
`;stp / Styled Prop interpolation for styled-components (with props) 
${props => props.$END$}Various
usetr / i18n useTranslation hook 
const {$PROPERTIES$} = useTranslation($NAMESPACE$);$END$tvf / Typescript: void function 
() => voidparsej / Parser function for JSON 
export function parse$TYPE$(json: any): $TYPE$ {
    return {
        ...json,
        $END$
    };
}