Skip to content

Latest commit

ย 

History

History
63 lines (52 loc) ยท 3.33 KB

File metadata and controls

63 lines (52 loc) ยท 3.33 KB

์ด ์—ฐ์Šต์šฉ ํ”„๋กœ์ ํŠธ๋Š” ์•„๋ž˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ œ์ž‘๋˜์—ˆ์Œ


๊ณต์‹ ํŠœํ† ๋ฆฌ์–ผ

  • https://www.solidjs.com/tutorial/props_defaults

  • props/default props

    • ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ props๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•œ๋‹ค
    • ์‹œ๊ทธ๋„์„ props๋กœ ๋„˜๊ฒจ์ค„ ๋•Œ ์‹œ๊ทธ๋„์„ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๋ฉด ๋ฐ˜์‘์„ฑ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋‹ค
    • props์˜ ๋””ํดํŠธ๊ฐ’ ์„ค์ •์€ mergeProps๋ผ๋Š” ํ•จ์ˆ˜์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
    • mergeProps๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด ๊ฐ’์„ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜์— ๋ถˆ๊ณผ. ๊ตณ์ด mergeProps ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ.
  • split props

    • solid.js๋Š” ์‹œ๊ทธ๋„์„ destructuringํ•˜๋Š” ๋ฌธ๋ฒ•์ด ํ—ˆ์šฉ๋˜์ง€ ์•ˆ์Œ
    • ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง ํ–ˆ์„์‹œ์— ๋ฐ˜์‘์„ฑ์„ ์ถ”์ ํ•  ์ˆ˜ ์—†์Œ. ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๊ฐ’์ด ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ
    • ๊ทธ๋ž˜์„œ ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง ๋ฌธ๋ฒ•์„ ๋Œ€์‹ ํ•˜์—ฌ splitProps๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
    • splitProps๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์Œ
    • ๊ตํ›ˆ : solid.js๋Š” ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง์„ ํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ํ‘œํ˜„๋ ฅ์ด ๋งŽ์ด ์ค„์–ด๋“ฆ
  • lifecycle

    • onmount

      • react.js์˜ useEffect๋Š” ๋ผ์ดํ”„์‚ฌ์ดํด๊ณผ effect๋ฅผ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋””์ž์ธ๋˜์—ˆ์Œ. ์ด๊ฒƒ์€ ์‚ฌ์šฉ๋ฒ•์˜ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Œ
      • solid๋Š” createEffect์™€ onMount๋ฅผ ๋ถ„๋ฆฌํ•˜์˜€์Œ. ๋งค์šฐ ์ž˜ํ•œ ๊ฒฐ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•จ
      • onMount๊ฐ€ ์กด์žฌํ•˜๋‹ˆ onUnmount๋„ ์กด์žฌํ•  ๊ฑฐ๋ผ๋Š” ์œ ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•จ
      • onMount๋Š” ์ฃผ๋กœ fetch๋‚˜ localStorage๋“ฑ์˜ ์ดํŽ™ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋จ. ๊ณต์‹ ์˜ˆ์ œ์—์„œ๋„ fetch๋ฅผ ์ˆ˜ํ–‰ํ•จ
      • ๊ฐ€์žฅ ๋ณดํŽธ์ ์ธ onMount์˜ ํŒจํ„ด : fetch์ดํ›„ setSignal
    • oncleanup

      • cleanup is not run on perspective of components
      • run when that scope is triggered to re-evaluate
        • for example, createEffect is re-evaluate when signal changes
        • also oncleanup is used in useMemo that can be re-evaluated
  • event

  • style

    • you can use either class or classList
    • classList can avoid using tenerary operator
    • ryansolid dislike tenerary operator
  • use directive

    • ์˜ˆ :
      <div class="modal" use:clickOutside={setShow(false)}>
        Some Modal
      </div>
- ์œ„์˜ ์˜ˆ์ œ์—์„œ clickOutside ํ•จ์ˆ˜๋Š” `div.modal` ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค
- ref์™€ use directive๋Š” ๋น„์Šทํ•˜์ง€๋งŒ ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๋‹ค๋ฅด๋‹ค
- `<input ref={some_variable} />` ๋กœ ์ž‘์„ฑํ•˜๋ฉด some_variable์— input element๊ฐ€ ํ• ๋‹น๋œ๋‹ค
- ํ•˜์ง€๋งŒ `<input use:some_function={() => { some_logic_here }} />` <- ์ด์ฒ˜๋Ÿผ use directive์— some_function ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๋ฉด some_function ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ input element๋ฅผ ๋ฐ›๋Š”๋‹ค
- ์ฆ‰ ref์™€ use directive ๋ชจ๋‘ html element๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์€ ๊ฐ™๋‹ค. ๊ทธ๊ฒƒ์„ ๋ณ€์ˆ˜๋กœ ์ฐธ์กฐํ• ์ง€ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ฐธ์กฐํ• ์ง€์˜ ์ฐจ์ด์ผ๋ฟ
- use directive๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด html element๋ฅผ ํ•จ์ˆ˜ ๋‹จ์œ„๋กœ ํ”„๋กœ์„ธ์‹ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ref๋ณด๋‹ค ๋” ์ ์ ˆํ•ด ๋ณด์ž„. ref๋Š” ์กฐ๊ธˆ ์ง€์ €๋ถ„ํ•˜๊ณ  use directive๋Š” ๊น”๋”ํ•œ ๋А๋‚Œ