Live templates for TypeScript and typed React code, for IntelliJ IDEA, WebStorm, PHPStorm and other JetBrains IDEs. With sensible variable expressions and useful skeleton templates.
Supported templates:
uses
: React.useState()usee
: React.useEffect()useh
: React use Hookrfc
: React Functional Componentrfct
: React typed Functional Componentrfr
: React forward Refint
: TypeScript Interfacetype
: TypeScript Typearr
: Anonymous arrow functionel
: JSX elementrcctx
: React create new Context with type, hook and providerifs
: import fsipath
: import pathfunarr
: Arrow function variablefun
: Functionasyncarr
: Async anonymous arrow functionprom
: New Promisetimeout
: setTimeoutinterval
: setIntervalusem
: React.useMemo()usec
: React.useCallback()
If the library benefits, you can consider supporting it by sponsoring me.
Invoked via uses
.
const [$VAR$, set$VAR_SET$] = useState($DEFAULT_VAL$);$END$
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
VAR |
- |
false | |
VAR_SET |
capitalize(VAR) |
false | |
DEFAULT_VAL |
- |
false |
Invoked via usee
.
useEffect(() => {
$END$
}, [$1$]);
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
1 |
- |
false |
Invoked via useh
.
const $3$ = use$1$($2$);$END$
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
1 |
completeSmart() |
false | |
2 |
completeSmart() |
{} | false |
3 |
- |
false |
Invoked via rfc
.
export const $1$: React.FC<{$2$}> = props => {
return (
<$3$>
$END$
</$3$>
);
};
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
1 |
- |
false | |
2 |
- |
false | |
3 |
- |
false |
Invoked via rfct
.
export const $1$ = <$2$>(props: PropsWithChildren<$3$>) => {
return (
<$4$>
$END$
</$4$>
);
};
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
1 |
- |
false | |
2 |
- |
false | |
3 |
- |
false | |
4 |
- |
false |
Invoked via rfr
.
export const $COMP$ = React.forwardRef<HTML$ELEMENT_TYPE$ | null, $PROPS$>((props, ref) => {
const elementRef = useRef<HTML$ELEMENT_TYPE$>(null);
useImperativeHandle<HTML$ELEMENT_TYPE$ | null, HTML$ELEMENT_TYPE$ | null>(
ref,
() => elementRef.current && {
...elementRef.current,
},
);
$END$
return (
<$INNER_COMP$ ref={elementRef} />
);
});
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
COMP |
- |
false | |
ELEMENT_TYPE |
completeSmart() |
false | |
PROPS |
- |
{} | false |
INNER_COMP |
completeSmart() |
false |
Invoked via int
.
export interface $1$ {
$END$
}
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
1 |
- |
false |
Invoked via type
.
export type $1$ = {
$END$
}
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
1 |
- |
false |
Invoked via arr
.
($1$) => $2$
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
1 |
- |
false | |
2 |
- |
false |
Invoked via el
.
<$ELEMENT$PROPS$>
$END$
</$ELEMENT$>
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
ELEMENT |
- |
div | false |
PROPS |
- |
false |
Invoked via rcctx
.
type $CONTEXT_NAME_TYPE$ContextType = {
$END$
};
const $CONTEXT_NAME$Context = React.createContext<$CONTEXT_NAME$ContextType>($DEFAULT_VALUE$);
export const use$CONTEXT_NAME_HOOK$ = () => React.useContext($CONTEXT_NAME$Context);
export const $CONTEXT_NAME_PROVIDER$Provider: React.FC = props => {
return (
<$CONTEXT_NAME$Context.Provider value={$VAL$}>
{props.children}
</$CONTEXT_NAME$Context.Provider>
);
};
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
CONTEXT_NAME |
- |
false | |
CONTEXT_NAME_TYPE |
CONTEXT_NAME |
false | |
DEFAULT_VALUE |
- |
{} | false |
CONTEXT_NAME_HOOK |
capitalize(CONTEXT_NAME) |
false | |
CONTEXT_NAME_PROVIDER |
capitalize(CONTEXT_NAME) |
false | |
VAL |
- |
{} | false |
Invoked via ifs
.
import fs from 'fs';
Invoked via ipath
.
import path from 'path';
Invoked via funarr
.
const $VAR_NAME$ = ($PARAM$) => $END$;
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
VAR_NAME |
jsSuggestVariableName() |
false | |
PARAM |
- |
false |
Invoked via fun
.
function $FUNCTION_NAME$($PARAM$) {
$END$
}
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
FUNCTION_NAME |
- |
false | |
PARAM |
- |
false |
Invoked via asyncarr
.
async ($1$) => $2$
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
1 |
- |
false | |
2 |
- |
false |
Invoked via prom
.
new Promise<$TYPE$((res, rej) => {
$END$
});
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
TYPE |
- |
void | false |
Invoked via timeout
.
setTimeout(() => $END$, $TIME$);
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
TIME |
completeSmart() |
false |
Invoked via interval
.
setInterval(() => $END$, $TIME$);
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
TIME |
completeSmart() |
false |
Invoked via usem
.
const $VAR$ = useMemo(() => $RETURN$, [$DEP$]);
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
RETURN |
completeSmart() |
false | |
DEP |
completeSmart() |
false | |
VAR |
- |
false |
Invoked via usec
.
const $VAR$ = useCallback(() => $RETURN$, [$DEP$]);
Variables:
Name | Expression | Default Value | Skip if defined |
---|---|---|---|
RETURN |
completeSmart() |
false | |
DEP |
completeSmart() |
false | |
VAR |
- |
false |
Feel free to contribute to existing or new templates with issues or pull requests.
To test if your changes are working, clone the repo and run the gradle script runIde
.
Do not update the documentation in the readme.md or plugin.xml files, they are updated automatically.