Every space inside { } and ( ) means that this is pushed into next line :)
$ represent each step after tab.
TypeScript has own components and own snippets. Use search or just type ts before every component snippet.
I.E. tsrcc
| Prefix |
Method |
useStateSnippet→ |
const [state, setState] = useState(initialValue) |
useEffectSnippet→ |
useEffect with cleanup function and dependency array |
useContextSnippet→ |
const value = useContext(MyContext) |
useReducerSnippet→ |
const [state, dispatch] = useReducer(reducer, initial, init) |
useCallbackSnippet→ |
useCallback with dependency array |
useMemoSnippet→ |
useMemo with dependency array |
useRefSnippet→ |
const ref = useRef(initialValue) |
useImperativeHandleSnippet→ |
useImperativeHandle with ref and factory |
useLayoutEffectSnippet→ |
useLayoutEffect with cleanup and dependency array |
useIdSnippet→ |
const id = useId() |
useTransitionSnippet→ |
const [isPending, startTransition] = useTransition() |
useDeferredValueSnippet→ |
const deferred = useDeferredValue(value) |
useSnippet→ |
const value = use(resource) (Promises or Context) |
useActionStateSnippet→ |
useActionState with async handler, returns [state, action, isPending] |
useFormStatusSnippet→ |
const { pending, data, method, action } = useFormStatus() (from react-dom) |
useOptimisticSnippet→ |
useOptimistic with state and updater function |
| Prefix |
Method |
imp→ |
import moduleName from 'module' |
imn→ |
import 'module' |
imd→ |
import { destructuredModule } from 'module' |
ime→ |
import * as alias from 'module' |
ima→ |
import { originalName as aliasName} from 'module' |
exp→ |
export default moduleName |
exd→ |
export { destructuredModule } from 'module' |
exa→ |
export { originalName as aliasName} from 'module' |
enf→ |
export const functionName = (params) => { } |
edf→ |
export default (params) => { } |
ednf→ |
export default function functionName(params) { } |
met→ |
methodName = (params) => { } |
fre→ |
arrayName.forEach(element => { } |
fof→ |
for(let itemName of objectName { } |
fin→ |
for(let itemName in objectName { } |
anfn→ |
(params) => { } |
nfn→ |
const functionName = (params) => { } |
dob→ |
const {propName} = objectToDescruct |
dar→ |
const [propName] = arrayToDescruct |
sti→ |
setInterval(() => { }, intervalTime |
sto→ |
setTimeout(() => { }, delayTime |
prom→ |
return new Promise((resolve, reject) => { } |
pge→ |
get propertyName() { } |
pse→ |
set propertyName(value) { } |
tpf→ |
typeof operand |
cmmb→ |
comment block |
cp→ |
const { } = this.props |
cs→ |
const { } = this.state |
| Prefix |
Method |
imr→ |
import React from 'react' |
imrd→ |
import ReactDOM from 'react-dom' |
imrc→ |
import { Component } from 'react' |
imrcp→ |
import { Component } from 'react' + import PropTypes from 'prop-types' |
imrpc→ |
import { PureComponent } from 'react' |
imrpcp→ |
import { PureComponent } from 'react' + import PropTypes from 'prop-types' |
imrm→ |
import { memo } from 'react' |
imrmp→ |
import { memo } from 'react' + import PropTypes from 'prop-types' |
impt→ |
import PropTypes from 'prop-types' |
imrr→ |
import { BrowserRouter as Router, Route, NavLink} from 'react-router-dom' |
imbr→ |
import { BrowserRouter as Router} from 'react-router-dom' |
imbrc→ |
import { Routes, Route, NavLink, Link } from 'react-router-dom' |
imbrl→ |
import { Link } from 'react-router-dom' |
imbrnl→ |
import { NavLink } from 'react-router-dom' |
imrrs→ |
import { Routes, Route } from 'react-router-dom' |
imcbr→ |
import { createBrowserRouter, RouterProvider } from 'react-router-dom' |
imnav→ |
import { useNavigate } from 'react-router-dom' |
impar→ |
import { useParams } from 'react-router-dom' |
imsp→ |
import { useSearchParams } from 'react-router-dom' |
imld→ |
import { useLoaderData } from 'react-router-dom' |
imfet→ |
import { useFetcher } from 'react-router-dom' |
redux→ |
import { connect } from 'react-redux' |
rconst→ |
constructor(props) { } with state initialization |
est→ |
this.state = { } |
cdm→ |
componentDidMount = () => { } |
scu→ |
shouldComponentUpdate = (nextProps, nextState) => { } |
cdup→ |
componentDidUpdate = (prevProps, prevState) => { } |
cwun→ |
componentWillUnmount = () => { } |
gdsfp→ |
static getDerivedStateFromProps(nextProps, prevState) { } |
gsbu→ |
getSnapshotBeforeUpdate = (prevProps, prevState) => { } |
sst→ |
this.setState({ }) |
ssf→ |
this.setState((state, props) => return { }) |
props→ |
this.props.propName |
state→ |
this.state.stateName |
rcontext→ |
const $1 = React.createContext() |
cref→ |
this.$1Ref = React.createRef() |
bnd→ |
this.methodName = this.methodName.bind(this) |
| Prefix |
Method |
imrn→ |
import { $1 } from 'react-native' |
rnstyle→ |
const styles = StyleSheet.create({}) |
rnc→ |
React Native class component |
rncs→ |
React Native class component with StyleSheet |
rnce→ |
React Native class component with named export |
rnpc→ |
React Native PureComponent |
rnpce→ |
React Native PureComponent with named export |
rnf→ |
React Native functional component |
rnfe→ |
React Native functional component with named export |
rnfs→ |
React Native functional component with StyleSheet |
rnfes→ |
React Native functional component with StyleSheet and named export |
| Prefix |
Method |
rxaction→ |
redux action template |
rxconst→ |
export const $1 = '$1' |
rxreducer→ |
redux reducer template |
rxselect→ |
redux selector template |
rxslice→ |
redux slice template |
rxslicex→ |
redux slice with extraReducers (pending/fulfilled/rejected) |
rxthunk→ |
redux createAsyncThunk template |
rxapi→ |
RTK Query createApi with fetchBaseQuery |
| Prefix |
Method |
pta→ |
PropTypes.array |
ptar→ |
PropTypes.array.isRequired |
ptb→ |
PropTypes.bool |
ptbr→ |
PropTypes.bool.isRequired |
ptf→ |
PropTypes.func |
ptfr→ |
PropTypes.func.isRequired |
ptn→ |
PropTypes.number |
ptnr→ |
PropTypes.number.isRequired |
pto→ |
PropTypes.object |
ptor→ |
PropTypes.object.isRequired |
pts→ |
PropTypes.string |
ptsr→ |
PropTypes.string.isRequired |
ptnd→ |
PropTypes.node |
ptndr→ |
PropTypes.node.isRequired |
ptel→ |
PropTypes.element |
ptelr→ |
PropTypes.element.isRequired |
pti→ |
PropTypes.instanceOf(name) |
ptir→ |
PropTypes.instanceOf(name).isRequired |
pte→ |
PropTypes.oneOf([name]) |
pter→ |
PropTypes.oneOf([name]).isRequired |
ptet→ |
PropTypes.oneOfType([name]) |
ptetr→ |
PropTypes.oneOfType([name]).isRequired |
ptao→ |
PropTypes.arrayOf(name) |
ptaor→ |
PropTypes.arrayOf(name).isRequired |
ptoo→ |
PropTypes.objectOf(name) |
ptoor→ |
PropTypes.objectOf(name).isRequired |
ptsh→ |
PropTypes.shape({ }) |
ptshr→ |
PropTypes.shape({ }).isRequired |
ptex→ |
PropTypes.exact({ }) |
ptexr→ |
PropTypes.exact({ }).isRequired |
ptany→ |
PropTypes.any |
| Prefix |
Method |
clg→ |
console.log(object) |
clo→ |
console.log(`object`, object) |
clj→ |
console.log(`object`, JSON.stringify(object, null, 2)) |
ctm→ |
console.time(`timeId`) |
cte→ |
console.timeEnd(`timeId`) |
cas→ |
console.assert(expression,object) |
ccl→ |
console.clear() |
cco→ |
console.count(label) |
cdi→ |
console.dir |
cer→ |
console.error(object) |
cgr→ |
console.group(label) |
cge→ |
console.groupEnd() |
ctr→ |
console.trace(object) |
cwa→ |
console.warn |
cin→ |
console.info |
ctl→ |
console.table |
| Prefix |
Method |
usc |
'use client' directive |
uss |
'use server' directive |
| Prefix |
Method |
rtrsetup→ |
Full createBrowserRouter setup with RouterProvider and routes |
rtrla→ |
Route module with loader, action, and useLoaderData |
Note: Examples below show output with importReactOnTop set to false (default). When enabled, component snippets will include import React from 'react' at the top.
import { Component } from 'react';
export default class FileName extends Component {
render() {
return <>$2</>;
}
}
import { Component } from 'react';
export class FileName extends Component {
render() {
return <>$2</>;
}
}
export default $1;
import { Component } from 'react';
import PropTypes from 'prop-types';
export class FileName extends Component {
static propTypes = {};
render() {
return <>$2</>;
}
}
export default $1;
import { PureComponent } from 'react';
export default class FileName extends PureComponent {
render() {
return <>$2</>;
}
}
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
export default class FileName extends PureComponent {
static propTypes = {};
render() {
return <>$2</>;
}
}
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
export class FileName extends PureComponent {
static propTypes = {};
render() {
return <>$2</>;
}
}
export default FileName;
import { Component } from 'react';
import PropTypes from 'prop-types';
export default class FileName extends Component {
static propTypes = {
$2: $3,
};
render() {
return <>$4</>;
}
}
import PropTypes from 'prop-types';
function $1(props) {
return <>$0</>;
}
$1.propTypes = {};
export default $1;
export default function $1() {
return <>$0</>;
}
function $1() {
return <>$0</>;
}
export default $1;
import PropTypes from 'prop-types';
const $1 = (props) => {
return <>$0</>;
};
$1.propTypes = {};
export default $1;
export const $1 = () => {
return <>$0</>;
};
const $1 = () => {
return <>$0</>;
};
export default $1;
import { memo } from 'react';
export default memo(function $1() {
return <>$0</>;
});
import { memo } from 'react';
import PropTypes from 'prop-types';
const $1 = memo(function $1(props) {
return <>$0</>;
});
$1.propTypes = {};
export default $1;
import { Component } from 'react';
import { connect } from 'react-redux';
export class FileName extends Component {
render() {
return <>$4</>;
}
}
const mapStateToProps = (state) => ({});
const mapDispatchToProps = {};
export default connect(mapStateToProps, mapDispatchToProps)(FileName);
import { Component } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
export class FileName extends Component {
static propTypes = {
$2: $3,
};
render() {
return <>$4</>;
}
}
const mapStateToProps = (state) => ({});
const mapDispatchToProps = {};
export default connect(mapStateToProps, mapDispatchToProps)(FileName);
import { connect } from 'react-redux';
export const FileName = () => {
return <>$4</>;
};
const mapStateToProps = (state) => ({});
const mapDispatchToProps = {};
export default connect(mapStateToProps, mapDispatchToProps)(FileName);
const mapStateToProps = (state) => ({});
const mapDispatchToProps = {};
All TypeScript component snippets use type for Props/State by default. Change to interface via the typescriptPropsStatePrefix setting.
| Prefix |
Method |
exptp→ |
export type definition |
expint→ |
export interface definition |
tsrcc→ |
TypeScript class component with Props/State |
tsrce→ |
TypeScript class component with named export |
tsrfce→ |
TypeScript functional component with named export |
tsrfc→ |
TypeScript functional component with default export |
tsrafce→ |
TypeScript arrow function component with named export |
tsrafc→ |
TypeScript arrow function component |
tsrpc→ |
TypeScript PureComponent |
tsrpce→ |
TypeScript PureComponent with named export |
tsrcredux→ |
TypeScript class component with Redux |
tsrnf→ |
TypeScript React Native arrow function component |
tsrnfs→ |
TypeScript React Native arrow function with StyleSheet |
import { Component } from 'react';
import { Text, View } from 'react-native';
export default class FileName extends Component {
render() {
return (
<View>
<Text> $2 </Text>
</View>
);
}
}
import { View, Text } from 'react-native';
export default function $1() {
return (
<View>
<Text> $2 </Text>
</View>
);
}
import { StyleSheet, View, Text } from 'react-native';
export default function $1() {
return (
<View>
<Text> $2 </Text>
</View>
);
}
const styles = StyleSheet.create({});
import { View, Text } from 'react-native';
const $1 = () => {
return (
<View>
<Text> $2 </Text>
</View>
);
};
export default $1;
import { StyleSheet, View, Text } from 'react-native';
const $1 = () => {
return (
<View>
<Text> $2 </Text>
</View>
);
};
export default $1;
const styles = StyleSheet.create({});
import { Component } from 'react';
import { Text, StyleSheet, View } from 'react-native';
export default class FileName extends Component {
render() {
return (
<View>
<Text> $2 </Text>
</View>
);
}
}
const styles = StyleSheet.create({});
import { Component } from 'react';
import { Text, View } from 'react-native';
export class FileName extends Component {
render() {
return (
<View>
<Text> $2 </Text>
</View>
);
}
}
export default $1;
/**
|--------------------------------------------------
| $1
|--------------------------------------------------
*/
describe('$1', () => {
$2;
});
test('should $1', () => {
$2;
});
it('should $1', () => {
$2;
});
it('should $1', async () => {
$2;
});
test('should $1', async () => {
$2;
});
import renderer from 'react-test-renderer';
import { $1 } from '../$1';
describe('<$1 />', () => {
const defaultProps = {};
const wrapper = renderer.create(<$1 {...defaultProps} />);
test('render', () => {
expect(wrapper).toMatchSnapshot();
});
});
import renderer from 'react-test-renderer';
import { Provider } from 'react-redux';
import store from 'src/store';
import { $1 } from '../$1';
describe('<$1 />', () => {
const defaultProps = {};
const wrapper = renderer.create(
<Provider store={store}>
<$1 {...defaultProps} />)
</Provider>,
);
test('render', () => {
expect(wrapper).toMatchSnapshot();
});
});
import 'react-native';
import renderer from 'react-test-renderer';
import $1 from '../$1';
describe('<$1 />', () => {
const defaultProps = {};
const wrapper = renderer.create(<$1 {...defaultProps} />);
test('render', () => {
expect(wrapper).toMatchSnapshot();
});
});
import 'react-native';
import renderer from 'react-test-renderer';
import { Provider } from 'react-redux';
import store from 'src/store/configureStore';
import $1 from '../$1';
describe('<$1 />', () => {
const defaultProps = {};
const wrapper = renderer.create(
<Provider store={store}>
<$1 {...defaultProps} />
</Provider>,
);
test('render', () => {
expect(wrapper).toMatchSnapshot();
});
});
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
export const mapStateToProps = (state) => ({});
export const mapDispatchToProps = {};
export const $1 = (WrappedComponent) => {
const hocComponent = ({ ...props }) => <WrappedComponent {...props} />;
hocComponent.propTypes = {};
return hocComponent;
};
export default (WrapperComponent) =>
connect(mapStateToProps, mapDispatchToProps)($1(WrapperComponent));
import PropTypes from 'prop-types';
export default (WrappedComponent) => {
const hocComponent = ({ ...props }) => <WrappedComponent {...props} />;
hocComponent.propTypes = {};
return hocComponent;
};