@@ -354,41 +354,41 @@ TypeScript νμΌ(`*.ts`, `*.tsx`)μλ§ μ μ©λλ κ·μΉλ€μ
λλ€.
354354
355355---
356356
357- ## π₯ React Rules
357+ ## π₯ FE Rules
358358
359359` oxlint-react.json ` μ μ μλ React νλ‘μ νΈ μ μ© κ·μΉλ€μ
λλ€.
360360
361- ### νλ¬κ·ΈμΈ
361+ ### π React Rules
362362
363363- ` react ` : React κ΄λ ¨ κ·μΉ
364364- ` nextjs ` : Next.js κ΄λ ¨ κ·μΉ
365365- ` jsx-a11y ` : μ κ·Όμ±(a11y) κ΄λ ¨ κ·μΉ
366366
367- ### ` react/button-has-type `
367+ #### ` react/button-has-type `
368368
369369``` json
370370" warn"
371371```
372372
373373** μ΄μ ** : ` <button> ` μμλ λͺ
μμ μΌλ‘ ` type ` μμ±μ μ§μ ν΄μΌ ν©λλ€. κΈ°λ³Έκ°μ΄ ` submit ` μ΄λ―λ‘ μλνμ§ μμ νΌ μ μΆμ΄ λ°μν μ μμ΅λλ€.
374374
375- ### ` react/forward-ref-uses-ref `
375+ #### ` react/forward-ref-uses-ref `
376376
377377``` json
378378" error"
379379```
380380
381381** μ΄μ ** : ` forwardRef ` λ‘ λνλ μ»΄ν¬λνΈλ μ€μ λ‘ refλ₯Ό μ¬μ©ν΄μΌ ν©λλ€. μ¬μ©νμ§ μμΌλ©΄ λΆνμν λνμ
λλ€.
382382
383- ### ` react/jsx-boolean-value `
383+ #### ` react/jsx-boolean-value `
384384
385385``` json
386386[" warn" , " never" , { "assumeUndefinedIsFalse" : true }]
387387```
388388
389389** μ΄μ ** : boolean propsμ λͺ
μμ μΌλ‘ ` ={true} ` λ₯Ό μμ±νλ κ²μ μ§μν©λλ€. ` <Component isActive /> ` κ° λ κ°κ²°ν©λλ€.
390390
391- ### ` react/jsx-handler-names `
391+ #### ` react/jsx-handler-names `
392392
393393``` json
394394[
@@ -405,31 +405,31 @@ TypeScript νμΌ(`*.ts`, `*.tsx`)μλ§ μ μ©λλ κ·μΉλ€μ
λλ€.
405405- ν¨μ: ` handleClick ` , ` handleChange `
406406- Props: ` onClick ` , ` onChange `
407407
408- ### ` react/jsx-no-useless-fragment `
408+ #### ` react/jsx-no-useless-fragment `
409409
410410``` json
411411[" warn" , { "allowExpressions" : true }]
412412```
413413
414414** μ΄μ ** : λΆνμν Fragment(` <>...</> ` )λ₯Ό μ κ±°νμ¬ μ½λλ₯Ό κ°κ²°νκ² μ μ§ν©λλ€. ννμμ νμ©ν©λλ€.
415415
416- ### ` react/jsx-pascal-case `
416+ #### ` react/jsx-pascal-case `
417417
418418``` json
419419" error"
420420```
421421
422422** μ΄μ ** : React μ»΄ν¬λνΈλ PascalCaseλ₯Ό μ¬μ©νμ¬ HTML μμμ ꡬλΆν©λλ€.
423423
424- ### ` react/no-namespace `
424+ #### ` react/no-namespace `
425425
426426``` json
427427" error"
428428```
429429
430430** μ΄μ ** : JSXμμ namespace(μ: ` <Namespace.Component> ` )λ₯Ό μ¬μ©νμ§ μλλ‘ ν©λλ€. Reactμμλ μ§μνμ§ μμ΅λλ€.
431431
432- ### ` react/self-closing-comp `
432+ #### ` react/self-closing-comp `
433433
434434``` json
435435[
@@ -443,22 +443,106 @@ TypeScript νμΌ(`*.ts`, `*.tsx`)μλ§ μ μ©λλ κ·μΉλ€μ
λλ€.
443443
444444** μ΄μ ** : μμμ΄ μλ μ»΄ν¬λνΈμ HTML μμλ μ체 λ«κΈ° νκ·Έ(` <Component /> ` )λ₯Ό μ¬μ©νμ¬ μ½λλ₯Ό κ°κ²°νκ² λ§λλλ€.
445445
446- ### ` react/style-prop-object `
446+ #### ` react/style-prop-object `
447447
448448``` json
449449" error"
450450```
451451
452452** μ΄μ ** : ` style ` propμ λ°λμ κ°μ²΄μ¬μΌ ν©λλ€. λ¬Έμμ΄μ νμ©νλ©΄ XSS μ·¨μ½μ μ΄ λ°μν μ μμ΅λλ€.
453453
454- ### ` react/void-dom-elements-no-children `
454+ #### ` react/void-dom-elements-no-children `
455455
456456``` json
457457" error"
458458```
459459
460460** μ΄μ ** : ` <img> ` , ` <br> ` , ` <input> ` λ±μ void μμλ μμμ κ°μ§ μ μμ΅λλ€. μ΄λ₯Ό λ°©μ§νμ¬ HTML νμ€μ μ€μν©λλ€.
461461
462+ ### π JSX A11y Rules (μ κ·Όμ±)
463+
464+ μ κ·Όμ±(Accessibility)μ λͺ¨λ μ¬μ©μκ° μΉ μ ν리μΌμ΄μ
μ μ¬μ©ν μ μλλ‘ λ³΄μ₯νλ μ€μν μμμ
λλ€.
465+
466+ #### ` jsx-a11y/click-events-have-key-events `
467+
468+ ``` json
469+ " off"
470+ ```
471+
472+ ** μ΄μ ** : ν΄λ¦ μ΄λ²€νΈμ λμνλ ν€λ³΄λ μ΄λ²€νΈλ₯Ό κ°μ νλ κ·μΉμ
λλ€. νμ¬λ offλ‘ μ€μ λμ΄ μμ§λ§, μ κ·Όμ±μ μν΄ νλ‘μ νΈμ λ°λΌ νμ±νλ₯Ό κ³ λ €ν μ μμ΅λλ€.
473+
474+ #### ` jsx-a11y/img-redundant-alt `
475+
476+ ``` json
477+ " warn"
478+ ```
479+
480+ ** μ΄μ ** : μ΄λ―Έμ§μ ` alt ` ν
μ€νΈμ "image", "photo", "picture" λ±μ μ€λ³΅λ λ¨μ΄λ₯Ό μ¬μ©νλ κ²μ κ²½κ³ ν©λλ€. μ€ν¬λ¦° 리λκ° μ΄λ―Έ μ΄λ―Έμ§μμ μλ €μ£Όλ―λ‘ λΆνμν©λλ€.
481+
482+ #### ` jsx-a11y/media-has-caption `
483+
484+ ``` json
485+ " off"
486+ ```
487+
488+ ** μ΄μ ** : λΉλμ€λ μ€λμ€ μμμ μλ§μ μꡬνλ κ·μΉμ
λλ€. νμ¬λ offλ‘ μ€μ λμ΄ μμ§λ§, μ κ·Όμ±μ μν΄ νλ‘μ νΈμ λ°λΌ νμ±νλ₯Ό κ³ λ €ν μ μμ΅λλ€.
489+
490+ #### ` jsx-a11y/mouse-events-have-key-events `
491+
492+ ``` json
493+ " off"
494+ ```
495+
496+ ** μ΄μ ** : λ§μ°μ€ μ΄λ²€νΈμ λμνλ ν€λ³΄λ μ΄λ²€νΈλ₯Ό κ°μ νλ κ·μΉμ
λλ€. νμ¬λ offλ‘ μ€μ λμ΄ μμ§λ§, μ κ·Όμ±μ μν΄ νλ‘μ νΈμ λ°λΌ νμ±νλ₯Ό κ³ λ €ν μ μμ΅λλ€.
497+
498+ #### ` jsx-a11y/no-noninteractive-tabindex `
499+
500+ ``` json
501+ " warn"
502+ ```
503+
504+ ** μ΄μ ** : μνΈμμ©νμ§ μλ μμ(div, span λ±)μ ` tabIndex ` λ₯Ό μ€μ νλ κ²μ κ²½κ³ ν©λλ€. ν€λ³΄λ λ€λΉκ²μ΄μ
μ νΌλμ λ°©μ§ν©λλ€.
505+
506+ #### ` jsx-a11y/no-redundant-roles `
507+
508+ ``` json
509+ " warn"
510+ ```
511+
512+ ** μ΄μ ** : HTML μμμ κΈ°λ³Έ μν κ³Ό λμΌν ` role ` μμ±μ μ€λ³΅μΌλ‘ μ§μ νλ κ²μ κ²½κ³ ν©λλ€. μ: ` <button role="button"> `
513+
514+ #### ` jsx-a11y/role-has-required-aria-props `
515+
516+ ``` json
517+ " warn"
518+ ```
519+
520+ ** μ΄μ ** : νΉμ ARIA ` role ` μ μ¬μ©ν λ νμμ μΈ ARIA μμ±μ΄ λλ½λμ§ μλλ‘ κ²½κ³ ν©λλ€. μ€ν¬λ¦° 리λκ° μ¬λ°λ₯΄κ² λμνλλ‘ λ³΄μ₯ν©λλ€.
521+
522+ #### ` jsx-a11y/role-supports-aria-props `
523+
524+ ``` json
525+ " warn"
526+ ```
527+
528+ ** μ΄μ ** : νΉμ ` role ` μμ μ§μνμ§ μλ ARIA μμ±μ μ¬μ©νλ κ²μ κ²½κ³ ν©λλ€. μ ν¨νμ§ μμ ARIA μ‘°ν©μ λ°©μ§ν©λλ€.
529+
530+ #### ` jsx-a11y/tabindex-no-positive `
531+
532+ ``` json
533+ " warn"
534+ ```
535+
536+ ** μ΄μ ** : μμ ` tabIndex ` κ° μ¬μ©μ κ²½κ³ ν©λλ€. μμ κ°μ ν€λ³΄λ λ€λΉκ²μ΄μ
μμλ₯Ό μμΈ‘νκΈ° μ΄λ ΅κ² λ§λ€λ―λ‘ ` 0 ` λλ ` -1 ` λ§ μ¬μ©νλλ‘ κΆμ₯ν©λλ€.
537+
538+ #### ` jsx-a11y/prefer-tag-over-role `
539+
540+ ``` json
541+ " warn"
542+ ```
543+
544+ ** μ΄μ ** : ARIA ` role ` μ μ¬μ©νλ λμ μλ―Έλ‘ μ μΈ HTML νκ·Έλ₯Ό μ°μ μ¬μ©νλλ‘ κΆμ₯ν©λλ€. μ: ` <div role="button"> ` λμ ` <button> ` μ¬μ©
545+
462546---
463547
464548## π₯ Node Rules
0 commit comments