Skip to content

Commit 547f799

Browse files
committed
feat: add imrs, imrse, rnxf snippets
Restores snippet contributions from closed PRs: - imrs / imrse (#321): React imports with useState / useState+useEffect - rnxf (#339): React Native extended functional component Also sorts package.json keywords to satisfy oxfmt --check.
1 parent 2580755 commit 547f799

4 files changed

Lines changed: 122 additions & 15 deletions

File tree

package.json

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,29 @@
77
"Snippets"
88
],
99
"keywords": [
10-
"react snippets",
11-
"react native snippets",
12-
"redux snippets",
13-
"javascript snippets",
14-
"typescript snippets",
10+
"customizable",
11+
"es2022",
12+
"es7",
1513
"es7 snippets",
14+
"hooks",
15+
"javascript",
16+
"javascript snippets",
17+
"jsx",
18+
"productivity",
1619
"react",
17-
"react-native",
20+
"react native snippets",
21+
"react snippets",
1822
"react-hooks",
23+
"react-native",
1924
"react-router",
2025
"redux",
26+
"redux snippets",
2127
"redux-toolkit",
2228
"rtk-query",
23-
"javascript",
24-
"typescript",
25-
"jsx",
26-
"tsx",
2729
"snippets",
28-
"hooks",
29-
"es2022",
30-
"es7",
31-
"customizable",
32-
"productivity"
30+
"tsx",
31+
"typescript",
32+
"typescript snippets"
3333
],
3434
"homepage": "https://github.com/r5n/vscode-react-javascript-snippets#readme",
3535
"bugs": {

src/snippets/generated.json

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -993,6 +993,22 @@
993993
],
994994
"scope": "typescript,typescriptreact,javascript,javascriptreact"
995995
},
996+
"importReactWithUseState": {
997+
"key": "importReactWithUseState",
998+
"prefix": "imrs",
999+
"body": [
1000+
"import { useState } from 'react'"
1001+
],
1002+
"scope": "typescript,typescriptreact,javascript,javascriptreact"
1003+
},
1004+
"importReactWithUseStateAndUseEffect": {
1005+
"key": "importReactWithUseStateAndUseEffect",
1006+
"prefix": "imrse",
1007+
"body": [
1008+
"import { useState, useEffect } from 'react'"
1009+
],
1010+
"scope": "typescript,typescriptreact,javascript,javascriptreact"
1011+
},
9961012
"importCreateBrowserRouter": {
9971013
"key": "importCreateBrowserRouter",
9981014
"prefix": "imcbr",
@@ -1433,6 +1449,42 @@
14331449
],
14341450
"scope": "typescript,typescriptreact,javascript,javascriptreact"
14351451
},
1452+
"reactNativeExtendedFunctional": {
1453+
"key": "reactNativeExtendedFunctional",
1454+
"prefix": "rnxf",
1455+
"body": [
1456+
"import { useState, useEffect } from 'react'",
1457+
"import { View, SafeAreaView, Text, StyleSheet } from 'react-native'",
1458+
"",
1459+
"const ${1:${TM_FILENAME_BASE}} = ({ ${2:props} }) => {",
1460+
" const [${3:state}, ${4:setState}] = useState(${5:initialState})",
1461+
"",
1462+
" useEffect(() => {",
1463+
" // Effect here",
1464+
" }, [])",
1465+
"",
1466+
" return (",
1467+
" <SafeAreaView style={styles.container}>",
1468+
" <View>",
1469+
" <Text>${6:Hello, World!}</Text>",
1470+
" </View>",
1471+
" </SafeAreaView>",
1472+
" )",
1473+
"}",
1474+
"",
1475+
"const styles = StyleSheet.create({",
1476+
" container: {",
1477+
" flex: 1,",
1478+
" justifyContent: 'center',",
1479+
" alignItems: 'center',",
1480+
" },",
1481+
"})",
1482+
"",
1483+
"export default ${1:${TM_FILENAME_BASE}}"
1484+
],
1485+
"description": "React Native functional component with useState, useEffect, SafeAreaView and basic styling",
1486+
"scope": "typescript,typescriptreact,javascript,javascriptreact"
1487+
},
14361488
"reactNativeFunctionalComponent": {
14371489
"key": "reactNativeFunctionalComponent",
14381490
"prefix": "rnf",

src/sourceSnippets/imports.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ type ImportsMappings = {
1919
importReactWithMemoAndPropTypes: 'imrmp';
2020
importReactWithPureComponent: 'imrpc';
2121
importReactWithPureComponentAndPropTypes: 'imrpcp';
22+
importReactWithUseState: 'imrs';
23+
importReactWithUseStateAndUseEffect: 'imrse';
2224
importReduxConnect: 'redux';
2325
importRouterLink: 'imbrl';
2426
importRouterNavLink: 'imbrnl';
@@ -81,6 +83,18 @@ const importReactWithPureComponentAndPropTypes: ImportsSnippet = {
8183
],
8284
};
8385

86+
const importReactWithUseState: ImportsSnippet = {
87+
key: 'importReactWithUseState',
88+
prefix: 'imrs',
89+
body: ["import React, { useState } from 'react'"],
90+
};
91+
92+
const importReactWithUseStateAndUseEffect: ImportsSnippet = {
93+
key: 'importReactWithUseStateAndUseEffect',
94+
prefix: 'imrse',
95+
body: ["import React, { useState, useEffect } from 'react'"],
96+
};
97+
8498
const importReactWithMemo: ImportsSnippet = {
8599
key: 'importReactWithMemo',
86100
prefix: 'imrm',
@@ -236,6 +250,8 @@ export default [
236250
importReactWithMemoAndPropTypes,
237251
importReactWithPureComponent,
238252
importReactWithPureComponentAndPropTypes,
253+
importReactWithUseState,
254+
importReactWithUseStateAndUseEffect,
239255
importCreateBrowserRouter,
240256
importRouterLink,
241257
importRouterNavLink,

src/sourceSnippets/reactNative.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type ReactNativeMapping = {
1919
reactNativeFunctionalExportComponentWithStyles: 'rnfes';
2020
reactNativeFunctionalComponent: 'rnf';
2121
reactNativeFunctionalComponentWithStyles: 'rnfs';
22+
reactNativeExtendedFunctional: 'rnxf';
2223
};
2324

2425
export type ReactNativeSnippet = SnippetMapping<ReactNativeMapping>;
@@ -181,10 +182,48 @@ const reactNativeFunctionalComponentWithStyles: ReactNativeSnippet = {
181182
],
182183
};
183184

185+
const reactNativeExtendedFunctional: ReactNativeSnippet = {
186+
key: 'reactNativeExtendedFunctional',
187+
prefix: 'rnxf',
188+
body: [
189+
"import React, { useState, useEffect } from 'react'",
190+
"import { View, SafeAreaView, Text, StyleSheet } from 'react-native'",
191+
'',
192+
`const ${Placeholders.FileName} = ({ \${2:props} }) => {`,
193+
' const [${3:state}, ${4:setState}] = useState(${5:initialState})',
194+
'',
195+
' useEffect(() => {',
196+
' // Effect here',
197+
' }, [])',
198+
'',
199+
' return (',
200+
' <SafeAreaView style={styles.container}>',
201+
' <View>',
202+
' <Text>${6:Hello, World!}</Text>',
203+
' </View>',
204+
' </SafeAreaView>',
205+
' )',
206+
'}',
207+
'',
208+
'const styles = StyleSheet.create({',
209+
' container: {',
210+
' flex: 1,',
211+
" justifyContent: 'center',",
212+
" alignItems: 'center',",
213+
' },',
214+
'})',
215+
'',
216+
`export default ${Placeholders.FileName}`,
217+
],
218+
description:
219+
'React Native functional component with useState, useEffect, SafeAreaView and basic styling',
220+
};
221+
184222
export default [
185223
reactNativeComponent,
186224
reactNativeComponentExport,
187225
reactNativeComponentWithStyles,
226+
reactNativeExtendedFunctional,
188227
reactNativeFunctionalComponent,
189228
reactNativeFunctionalComponentWithStyles,
190229
reactNativeFunctionalExportComponent,

0 commit comments

Comments
 (0)