Ant-design: <button>"findDOMNode๋Š” StrictMode์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ"๊ฒฝ๊ณ ์—์„œ ๊ฒฐ๊ณผ</button> ์‚ฌ์šฉ

์— ๋งŒ๋“  2020๋…„ 03์›” 22์ผ  ยท  126์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ant-design/ant-design

  • [x]์ด ์ €์žฅ์†Œ์˜ ๋ฌธ์ œ ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์œผ๋ฉฐ ์ด๊ฒƒ์ด ์ค‘๋ณต์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. * (๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด๋ณด๊ณ ํ–ˆ์ง€๋งŒ Issue Creator๋ฅผ ํ†ตํ•ด๋ณด๊ณ ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ž๋™์œผ๋กœ ๋‹ซํ˜”์Šต๋‹ˆ๋‹ค).

๋ณต์ œ ๋งํฌ

https://github.com/latobibor/antd-tryout/commit/e373cb5038d88bf73358a05c8b37e0369dbaf478

์žฌํ˜„ ๋‹จ๊ณ„

  1. ์„ค์น˜ ์ข…์†์„ฑ (npm i)
  2. ์•ฑ ์‹คํ–‰ (npm ์‹œ์ž‘)
  3. ์ฝ˜์†” ํ™•์ธ

๋ฌด์—‡์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๊นŒ?

๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

console.log์— "๊ฒฝ๊ณ  : StrictMode์—์„œ findDOMNode๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. findDOMNode๊ฐ€ StrictMode ๋‚ด์—์žˆ๋Š” Wave์˜ ์ธ์Šคํ„ด์Šค๋กœ ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ฐธ์กฐํ•˜๋ ค๋Š” ์š”์†Œ์— ์ฐธ์กฐ๋ฅผ ์ง์ ‘ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. ์ฐธ์กฐ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ"๋ผ๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ console.log์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์•ˆ์ „ํ•˜๊ฒŒ ์—ฌ๊ธฐ : "

| ํ™˜๊ฒฝ | ์ •๋ณด |
| --- | --- |
| ๊ฐœ๋ฏธ | 4.0.3 |
| ๋ฐ˜์‘ | 16.13.1 |
| ์‹œ์Šคํ…œ | Windows 8.1 |
| ๋ธŒ๋ผ์šฐ์ € | ํฌ๋กฌ 80 |


๋ฌธ์ œ์˜ ์›์ธ์€ <Button /> ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ์˜ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
https://github.com/latobibor/antd-tryout/commit/e373cb5038d88bf73358a05c8b37e0369dbaf478#diff -b525f6f7c3584f9af17112d37dae3a42

help wanted

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฒ„ํŠผ์„ ์œ„ํ•ด ์—„๊ฒฉ ๋ชจ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ๋ง๋„ ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” antd์˜ ํ•ฉ๋ฒ•์  ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  126 ๋Œ“๊ธ€

์€ํ‡ดReactDOM.render () ๋ฉ”์„œ๋“œ์˜ ํƒœ๊ทธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Strict ๋ชจ๋“œ antd v4.0.4์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of Wave which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://fb.me/react-strict-mode-find-node

๋™์ผํ•˜๊ฑฐ๋‚˜ ์ œ์•ˆ์— ๊ด€ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฒ„ํŠผ์„ ์œ„ํ•ด ์—„๊ฒฉ ๋ชจ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ๋ง๋„ ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” antd์˜ ํ•ฉ๋ฒ•์  ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค

# 9870๊ณผ ๊ฐ™์ด ๋งŽ์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

https://ant.design/docs/react/use-in-typescript ๊ฐ€์ด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ ์„ค์น˜ ํ•œ ํ›„์—๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค

desc

๊ฒฝ๊ณ  : findDOMNode๋Š” StrictMode์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. findDOMNode์— StrictMode ๋‚ด๋ถ€์—์žˆ๋Š” Wave์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ฐธ์กฐํ•˜๋ ค๋Š” ์š”์†Œ์— ์ง์ ‘ ์ฐธ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. https://fb.me/react-strict-mode-find-node์—์„œ refs๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์‹ญ์‹œ์˜ค.

ํ’€๋‹ค

ReactDOM.render(
  // <React.StrictMode>
    <App />
  // </React.StrictMode>,
  ,
  document.getElementById('root')
);

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์น  ์ˆ˜ ์žˆ๋‚˜์š”?

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์น  ์ˆ˜ ์žˆ๋‚˜์š”?

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๋Š” <Button /> ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค. ๋‚˜๋Š” ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋‹ค

<InputMask
    mask='99/99/9999'
    onFocus={onFocus} onBlur={onBlur}
    defaultValue={fields.birthdate.value}
    error={fields.birthdate.error}
    helperText={fields.birthdate.helperText}
    id='birthdate' name='birthdate' label='Birthdate MM/DD/YYYY'
    type='tel' variant='filled' margin='dense'
>
    {(inputProps) =>
        <TextField {...inputProps} />
    }
</InputMask>

๋ฌธ์ œ์˜ ๋ผ์ธ์€ ์„ .

์—„๊ฒฉ ๋ชจ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์—„๊ฒฉ ๋ชจ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด์— ๋Œ€ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ฝ”๋“œ์— ๊ธฐ์—ฌํ•˜์‹ญ์‹œ์˜ค.

SubMenu ๋ฐ Select ๊ตฌ์„ฑ ์š”์†Œ์—์„œ๋„์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ  : ์—„๊ฒฉ ๋ชจ๋“œ ํŠธ๋ฆฌ ๋‚ด์—์„œ ๋ ˆ๊ฑฐ์‹œ ์ปจํ…์ŠคํŠธ API๊ฐ€ ๊ฐ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด์ „ API๋Š” ๋ชจ๋“  16.x ๋ฆด๋ฆฌ์Šค์—์„œ ์ง€์›๋˜์ง€๋งŒ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค. ํ•˜์œ„ ๋ฉ”๋‰ด

๊ฐ™์€ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค

๊ฐ™์€ ๋ฌธ์ œ

๊ฐ™์€ ๋ฌธ์ œ๋„ :(

์—ฌ๊ธฐ์—์„œ ํ•˜๋‚˜ ๋”, ์žฅ์• ์ธ๊ณผ ํ•จ๊ป˜ ์ž‘์—…,ํ•˜์ง€๋งŒ ์žฅ๊ธฐ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹ˆ๊ธฐ๋ฅผ ์ •๋ง๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ

์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋„ ๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Ant ํŒ€์ด ์ด๋ฏธ ํ•ด๊ฒฐ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฉ”๋‰ด๋Š” ๋˜ํ•œ ๋‹ค์Œ ๊ฒฝ๊ณ ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
<Menu mode="horizontal" >
์ˆ˜ํ‰ ๋ชจ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๊ฒƒ์ด ํฐ ์ผ์ด ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํŒŒํ—ค์ณ ์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of DOMWrap which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://fb.me/react-strict-mode-find-node
    in ul (created by DOMWrap)
    in DOMWrap (created by SubPopupMenu)
    in SubPopupMenu (created by Connect(SubPopupMenu))
    in Connect(SubPopupMenu) (created by Menu)
    in Provider (created by Menu)
    in Menu (created by Context.Consumer)
    in InternalMenu (created by Context.Consumer)

"antd": "^4.1.5"
"react": "^16.13.1"

๊ฐ™์€ ๋ฌธ์ œ, ๋„์›€ !!! ๋ถ€๋””.

@latobibor ์•ˆ๋…•ํ•˜์„ธ์š”. ์šฐ๋ฆฌ๋Š” ์™„์ „ํžˆ ๊ท€ํ•˜์˜ ์ œ์•ˆ / ํ”ผ๋“œ๋ฐฑ ๊ฐ™์ด, ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค ์šฐ๋ฆฌ์—๊ฒŒ ๋Œ์–ด ์˜ค๊ธฐ ์š”์ฒญ์„ ๋ณด๋‚ด ๊ทธ๊ฒƒ์„ ์œ„ํ•ด. ์ ์ ˆํ•œ ์ง€์  (์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์ง€์ , ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ ๊ธฐํƒ€ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ๋งˆ์Šคํ„ฐ)๋กœ ๋Œ์–ด ์˜ค๊ธฐ ์š”์ฒญ์„ ๋ณด๋‚ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค ์ฑ„์šฐ๊ธฐ ํ’€ ์š”์ฒญ ์—ฌ๊ธฐ์—

์•ˆ๋…•ํ•˜์„ธ์š” @latobibor, ์šฐ๋ฆฌ๋Š” ๊ท€ํ•˜์˜ ์ œ์•ˆ / ํ”ผ๋“œ๋ฐฑ์— ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Pull Request ๋ฅผ ์‹ญ์‹œ์˜ค . Pull Request๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ๋ธŒ๋žœ์น˜ (๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜์˜ ์ƒˆ ๊ธฐ๋Šฅ, โ€‹โ€‹๋‹ค๋ฅธ ๊ธฐ๋Šฅ์€ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜)๋กœ ๋ณด๋‚ด ์ฃผ์‹œ๊ณ  , Pull Request

giphy

๊ฐ™์€ ๋ฌธ์ œ

index.js:1 Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of Wave which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://fb.me/react-strict-mode-find-node
    in button (created by Context.Consumer)
    in Wave (created by Context.Consumer)
    in Button (at SignInPage/index.js:93)
    in div (created by FormItemInput)
    in div (created by FormItemInput)
    in div (created by Context.Consumer)
    in Col (created by FormItemInput)
    in FormItemInput (created by FormItem)
    in div (created by Context.Consumer)
    in Row (created by FormItem)
    in FormItem (at SignInPage/index.js:92)
    in form (created by ForwardRef(Form))
    in ForwardRef(Form) (created by ForwardRef(InternalForm))
    in SizeContextProvider (created by ForwardRef(InternalForm))
    in ForwardRef(InternalForm) (at SignInPage/index.js:43)
    in div (at SignInPage/index.js:42)
    in div (at SignInPage/index.js:33)
    in div (created by Context.Consumer)
    in Col (at SignInPage/index.js:32)
    in div (created by Context.Consumer)
    in Row (at SignInPage/index.js:31)
    in SignInPage (at AuthLayout/index.js:14)
    in Route (at AuthLayout/index.js:10)
    in Switch (at AuthLayout/index.js:7)
    in AuthLayout (at publicRoute.js:11)
    in Route (at publicRoute.js:9)
    in PublicRoute (at App.js:17)
    in Switch (at App.js:16)
    in Suspense (at App.js:15)
    in Router (created by BrowserRouter)
    in BrowserRouter (at App.js:14)
    in div (at App.js:13)
    in App (at src/index.js:9)
    in StrictMode (at src/index.js:8)

๊ฐ™์€ ๋ฌธ์ œ๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ๋ฐ๋ชจ๋ฅผ ํ†ตํ•ด typescript ์‚ฌ์šฉ ๋ฌธ์„œ๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค.

const App = () => (
  <div className="App">
    <Button type="primary">Button</Button>
  </div>
);

ํ•˜์ง€๋งŒ ์ฝ˜์†”์—์„œ index.js:1 Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of Wave which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ๊ณ ์น˜๋Š” ์ง€?

React.StrictMode๋ฅผ ๋„๊ณ  ๊ฐœ๋ฏธ ๋””์ž์ธ ํŒ€์ด์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๊ฐ™์€ ๋ฌธ์ œ, ๊ทธ๋ฆฌ๊ณ 

์—ฌ๊ธฐ์—์„œ ํ•˜๋‚˜ ๋”, ์žฅ์• ์ธ๊ณผ ํ•จ๊ป˜ ์ž‘์—…,ํ•˜์ง€๋งŒ ์žฅ๊ธฐ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹ˆ๊ธฐ๋ฅผ ์ •๋ง๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฐ”๋กœ ๊ทธ๊ฑฐ์ฃ 

์ตœ์‹  ๋ฒ„์ „ (antd 4.2.0)์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ

๊ฐ™์€ ๋ฌธ์ œ
index.js:1 Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of Wave which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://fb.me/react-strict-mode-find-node

+1

์—ฌ๊ธฐ์— ๊ฐ™์€ ๋ฌธ์ œ
image .
์ˆ˜์ •์€ ๋†€๋ž์Šต๋‹ˆ๋‹ค! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค antd ํŒ€!

๊ฐ™์€ ๋ฌธ์ œ
image

๊ทธ๋ž˜์„œ ์–ด๋–ค ํ•ด๊ฒฐ์ฑ…?

ํ•˜๋‚˜ ์ถ”๊ฐ€

image
๊ฐ™์€ ๋ฌธ์ œ.

์ด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•˜์‹ญ์‹œ์˜ค!

Button์—์„œ๋„์ด ๋ฌธ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ์ณ์ฃผ์„ธ์š”

์—ฌ๊ธฐ์—์„œ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉด

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

antd์™€ ๊ด€๋ จ์ด์žˆ๋Š” ๊ฒƒ์ด ํ™•์‹คํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” antd 3๋กœ ์ „ํ™˜ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ƒ๋‹นํžˆ ์‹œ๊ธ‰ํ•œ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Ant D ์–ด๋””์žˆ์–ด?

ํ˜„์žฌ PR ์ž‘์—…์ค‘์ธ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํ•˜๋‚˜ ์“ฐ๊ธฐ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

@caelinsutch ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ, ์•„๋ฌด๋„.

์ฃผ์š” ๋ฌธ์ œ๋Š” findDOMNode ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ์ด๊ฒƒ ๋˜๋Š” ์ด ํ•˜๋‚˜

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ ๋œ ๋ฌธ์ œ :
Screen Shot 2020-05-12 at 10 30 01 PM

๊ณต์‹ ์˜ˆ์ œ์—์„œ ์˜๊ฐ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค : https://ant.design/components/form-cn/

๊ท€ํ•˜์˜ ์˜ˆ๊ฐ€ ์ œ ์‚ฌ๊ฑด์„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค : https://github.com/ant-design/ant-design/issues/22493#issuecomment -619562638. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์ด ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€๋„ ์ „ํ˜€ ์•Œ๋ ค์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋ญ”๊ฐ€๋ฅผํ–ˆ๋‹ค๋ฉด.

@CathyXian ์–‘์‹์˜ ๋ชจ๋“  ๋ฒ„ํŠผ์„ ๋ž˜ํ•‘ํ•ด๋„ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ <Button> ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์–‘์‹์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ๋Œ€์‹  onClick ์ด๋ฒคํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@caelinsutch๊ฐ€ ์ง€์ ํ–ˆ๋“ฏ์ด Wave ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ findDOMNode๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•œ ๊ฒฐ๊ณผ

์›จ์ด๋ธŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜์—ฌ ์ด์ „ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๋„ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. https://github.com/ant-design/ant-design/search?q=findDOMNode&unscoped_q=findDOMNode

์–ด๋–ค ์ข…๋ฅ˜์˜ ์ด์ƒํ•œ ์ด์œ ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์žฌ์ƒ์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  <React.Suspense fallback={''}>
    <App />
  </React.Suspense>

์–ด๋–ค ์ข…๋ฅ˜์˜ ์ด์ƒํ•œ ์ด์œ ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์žฌ์ƒ์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  <React.Suspense fallback={''}>
    <App />
  </React.Suspense>

๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์ง€๋งŒ ๊ทธ ์งˆ๋ฌธ์€ ์žฅ๊ธฐ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ž…๋‹ˆ๊นŒ?

์–ด๋–ค ์ข…๋ฅ˜์˜ ์ด์ƒํ•œ ์ด์œ ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์žฌ์ƒ์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  <React.Suspense fallback={''}>
    <App />
  </React.Suspense>

์ด๊ฒƒ์€ ๋‹จ์ง€ ๋žฉ ์ œ๊ฑฐ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค <React.StrictMode> ์•ฝ <App> . ํ•„์š”ํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

Tabs conponent์—์„œ๋„ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
๋” ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ฐ™์€ ๋ฌธ์ œ ๐Ÿ˜“

์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

์œ„์—์„œ ์„ค๋ช…ํ•œ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ์†”๋ฃจ์…˜์ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ ํ›„๋ฐ˜์— ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค!

๊ฐ™์€ ๋ฌธ์ œ

๊ฐ™์€ ๋ฌธ์ œ

                  `<Button
                        htmlType="button"
                        icon={<LoginOutlined />}
                        onClick={this.onLogin.bind(this)}
                    >
                        Welcome Back
                    </Button>`

์—ฌ์ „ํžˆ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” htmlType ์†์„ฑ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. StrictMode ์ œ๊ฑฐ๋Š” ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค. @antd ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

๊ฐ™์€ ๋ฌธ์ œ

๋ชจ๋“  ์†”๋ฃจ์…˜, ๋™์ผํ•œ ๋ฌธ์ œ ....

SubMenu๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ๋™์ผํ•œ ๋ฌธ์ œ.
"๋ฐ˜์‘": "^ 16.13.1",
"react-dom": "^ 16.13.1",
"antd": "^ 4.3.1",

form.item์—์„œ ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ


<Button type="primary" htmlType="submit" > LOG IN </Button>

"antd": "^ 4.3.1",

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ „๋ฐ˜์ ์ธ ์กฐ์‚ฌ๋ฅผํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ฟก๋ฟก

๊ฐ™์€ ๋ฌธ์ œ, ์–ด๋–ค ํ•ด๊ฒฐ์ฑ…?

์ˆ˜์ง ๋ฉ”๋‰ด์˜ ํ•˜์œ„ ๋ฉ”๋‰ด์™€ ๋™์ผํ•œ ๋ฌธ์ œ,

์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Button ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋‚˜์˜ค์ง€๋งŒ ์‹ค์ œ๋กœ componentDidMount ๋ฐ onTransitionStart ์˜ Wave ๊ตฌ์„ฑ ์š”์†Œ์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. findDOMNode(this) ๋Œ€์‹  ref๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋„

+1

+1

+1

๊ฐœ๋ฐœ์ž๊ฐ€ ๊ทœ์น™์„ ๋”ฐ๋ฅด๊ณ  ์ด๋ฉ”์ผ์„ ํ†ตํ•ด์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ดด๋กญํžˆ๋Š” ๋ฐ +1์„ ๋‘์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งค์šฐ ์„ฑ ๊ฐ€์‹œ๊ณ  ๋น„์ „๋ฌธ์ ์ž…๋‹ˆ๋‹ค. @kreuzhofer @Lemii @moderndegree @TechieQian @lefterisk ๋ฐ ๊ธฐํƒ€

Ant ๋””์ž์ธ ๋ฉ”๋‰ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ

์—ฌ๊ธฐ์— ๊ฐ™์€ ๋ฌธ์ œ. ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค

Ant Design Button์„ ์‚ฌ์šฉํ•  ๋•Œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ

+1

์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๊ฐ™์€ ๋ฌธ์ œ๋Š” ์—„๊ฒฉ ๋ชจ๋“œ๋ฅผ ๋Œ ํ•„์š”๊ฐ€์—†๋Š” ์†”๋ฃจ์…˜์ด๋‚˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ •๋ง ์ข‹์•„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

์—ฌ๊ธฐ์— ๊ฐ™์€ ๋ฌธ์ œ

ํ•˜์œ„ ๋ฉ”๋‰ด์™€ ๋™์ผํ•œ ๋ฌธ์ œ

@Ant ํŒ€, ๋‚˜๋Š” ์ด๊ฒƒ์„ ์—ด์–ด๋‘๊ณ  ๋ฌธ์ œ๋ฅผ ์ž ๊ทธ๊ณ  ์Œ์†Œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ถ”๊ฐ€ +1๊ณผ ๋‚˜ ์—ญ์‹œ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋„์›€์ด๋˜๋Š” ๊ฐ€์น˜๊ฐ€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋ˆˆ์— ๋„๋Š” ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐพ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์†Œ์Œ๊ณผ ์ŠคํŒธ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋•๊ณ  ์‹ถ๋‹ค๋ฉด ์ฝ”๋“œ ๋ฆฌ๋ทฐ์— ๊ธฐ์—ฌํ•˜๊ณ  ์ž๋ฅด์„ธ์š”.

๋ชจ๋“  ์ผ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! :)

๋ฐฉ๊ธˆ React TypeScript ํ”„๋กœ์ ํŠธ์— antd๋ฅผ ์„ค์น˜ํ–ˆ๊ณ  ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜์ž๋งˆ์ž ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์–ด ์Šฌํ”„๋‹ค.

ant.design ๋ฒ„ํŠผ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
"antd": "^ 4.6.3",
"๋ฐ˜์‘": "^ 16.13.1",
"react-dom": "^ 16.13.1",

์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•?

๊ฐ™์€ ๋ฌธ์ œ

์ฝ”๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์˜ค๋ฅ˜๊ฐ€๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. . . ์•„์ง ์ˆ˜๋ฆฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. .

๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•  ๋•Œ์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” "antd"์—์žˆ๋‹ค : "^ 4.6.2"

๋ชจ๋‹ฌ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๊ธฐ์— ๋™์ผํ•œ ๋ฌธ์ œ.
2 ๊ฐœ์˜ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
`index.js : 1 ๊ฒฝ๊ณ  : ์—„๊ฒฉ ๋ชจ๋“œ์—์„œ UNSAFE_componentWillReceiveProps๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ฝ”๋“œ์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://fb.me/react-unsafe-component-lifecycles ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ ์˜ค๊ธฐ ์ฝ”๋“œ ๋˜๋Š” ๋ถ€์ž‘์šฉ์„ componentDidUpdate๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ์†Œํ’ˆ์ด ๋ณ€๊ฒฝ ๋  ๋•Œ๋งˆ๋‹ค ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ ๋ฉ”๋ชจ ํ™” ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ„ฐ๋งํ•˜๊ฑฐ๋‚˜ ์ •์  getDerivedStateFromProps๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค .`

๋งŒํผ ์ž˜ :
index.js:1 Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of AnimateChild which is inside StrictMode. Instead, add a ref directly to the element you want to reference.

์–ด๋–ค ์—…๋ฐ์ดํŠธ?

๊ฐ™์€ ๋ฌธ์ œ.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•  ๋•Œ 4.6.6์—์„œ๋„ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์—„๊ฒฉํ•œ ๋ชจ๋“œ ๊ฒ€์‚ฌ๋Š” ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์— ์˜ํ–ฅ์„์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”์‹œ์ง€๊ฐ€ ์„ฑ ๊ฐ€์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...
๋ฌผ๋ก , ์ฃผ์„์„ ๋‹ฌ์•„์ฃผ๋Š” ๊ฒƒ์€ ์ข‹์€ ๋Œ€๋‹ต์€ ์•„๋‹ˆ์ง€๋งŒ, ๋งŒ์•ฝ ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์—†๋‹ค๋ฉด ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐœ๋ฏธ 4.6.6๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ์™€ ๋ฐ˜์‘ 16.13.1 :(

์—ฌ๋Ÿฌ๋ถ„,์ด ์˜ค๋ฅ˜๊ฐ€ ๊ท€์ฐฎ์€ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ œ์•ˆ :

const isDev = process.env.NODE_ENV === 'development'

ReactDOM.render(
  isDev ? <App /> : (
    <React.StrictMode>
      <App />
    </React.StrictMode>
  ),
  document.getElementById('root')
)

๊ฑด๋ฐฐ!

ํ—‰ํ—‰
๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋งŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ StrictMode๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ StrictMode๊ฐ€ ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด ์กŒ๋Š”์ง€ ์ž์‹ ์˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒ€์‚ฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ.

๊ฐ™์€ ๋ฌธ์ œ.

๊ฐ™์€ ๋ฌธ์ œ

@ enoh-barbu ๋‚˜๋Š” ๋ˆ„๊ตฌ๋„ ์ด๊ฒƒ์„ ๊ณ ์น˜๋ ค๊ณ  ์ ๊ทน์ ์œผ๋กœ ๋…ธ๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”์„ ์—ด ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ด ์‹ซ์ง€๋งŒ,์ด ์˜ค๋ฅ˜๋ฅผ ์œ„ํ•ด ์—„๊ฒฉ ๋ชจ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ๋ง๋„ ์•ˆ๋˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค.

์ชฝ์œผ๋กœ

ํ•ด๊ฒฐ์ฑ…์ด ์—†๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”?

์ „์—)
image

ํ›„)
image

์ง€๊ธˆ๊นŒ์ง€ ๊ฐ™์€ ๋ฌธ์ œ.

์ง€๊ธˆ๊นŒ์ง€ ๊ฐ™์€ ๋ฌธ์ œ.

์ง€๊ธˆ๊นŒ์ง€ ๊ฐ™์€ ํ˜ธ

์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ.

์—ฌ์ „ํžˆ ๊นจ์ ธ

ํ•ด๊ฒฐ์ฑ…์ด ์—†๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”?

์ „์—)
(ํฐ ์ด๋ฏธ์ง€)

ํ›„)
(ํฐ ์ด๋ฏธ์ง€)

๋” ์ข‹์€ ์  : ์ฝ˜์†”์„ ๋‹ซ์œผ๋ฉด ๋ชจ๋“  ๊ฒฝ๊ณ ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค ๐Ÿ˜„

๋†๋‹ด ์ œ์ณ๋‘๊ณ  : ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ ์—์„œ๋„์ด ๋ฌธ์ œ์— ์ง๋ฉด

์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ
React.StrictMode ์ œ๊ฑฐ์— ๋„์›€

์Šค๋ ˆ๋“œ๋ฅผ ๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์งˆ๋ฌธํ•˜์‹ญ์‹œ์˜ค ... ์ด๊ฒƒ์€ ์˜๋ฏธ (ํŠนํžˆ ์˜ค๋ฅ˜)๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ฝ”๋“œ๋ฅผ๋ณด๊ณ  ์›์ธ (๋˜๋Š” ์ค‘์š”ํ•œ ์ด์œ )์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ •์งํ•˜๊ฒŒ ๊ณ ์ณ ๋ณด๋ ค๊ณ ํ–ˆ์ง€๋งŒ, ์™œ ๊ทธ๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ๋˜๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์กด์žฌํ•˜๋Š” ์œ„์น˜๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ํ™•์ธํ•  ์‹œ๊ฐ„ (๋˜๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ง€์‹)์ด ์—†์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ๋ถ„๋ช…ํžˆ ๋‚ด๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๊ฒฝํ—˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (๋ช‡ ์ผ ์ „์—๋Š” ์—†์—ˆ์œผ๋ฏ€๋กœ ์˜ค๋ฅ˜๋ฅผ ์œ ๋ฐœํ•˜๋Š” ํŠน์ • ์ƒํ™ฉ์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ findDOMNode๊ฐ€ ๋ฒ„ํŠผ์— ์ „ํ™”?)

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ "์˜ˆ, ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•˜์‹ญ์‹œ์˜ค"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฒฝ๊ณ ๋ฅผ ๊ฒฝํ—˜ํ•˜๊ณ  ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ณต๋™ ๋…ธ๋ ฅ ๋ฐ ๋‚˜์—ด ์ƒํ™ฉ์œผ๋กœ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ฟก ๋นต๋€จ
๋‚˜๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ „๋ฌธ๊ฐ€๋Š” ์•„๋‹ˆ์ง€๋งŒ ๋ฒ„ํŠผ ์š”์†Œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ •๋„๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์กฐ์‚ฌ์— ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๊ณ  findDomNode์˜ ์ฃผ์š” ์‚ฌ์šฉ์ด ์›จ์ด๋ธŒ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์›จ์ด๋ธŒ ๋ž€? ๋ฒ„ํŠผ ๊ตฌ์„ฑ ์š”์†Œ์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์— ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ˆ˜์ง‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Strict ๋ชจ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ ์™ธ์— (๋” ์ ์ ˆํ•œ ์ˆ˜์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ์„ ๋•Œ๊นŒ์ง€ ์˜์ง€ํ–ˆ๊ฑฐ๋‚˜ ์›จ์ด๋ธŒ์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ๋ฐฐ์šธ ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค ...) ์ฝ”๋“œ์˜ ๋ชจ์–‘์—์„œ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ findDomNode ์‚ฌ์šฉ์„ ์™„์ „ํžˆ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์›จ์ด๋ธŒ ์‚ฌ์šฉ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด props๋ฅผ ์‚ฌ์šฉํ•˜๋Š” PR. ์•ฝ๊ฐ„์˜ ์ธํ„ฐ๋„ท ๊ฒ€์ƒ‰์€ ์ด๊ฒƒ์ด ๋‹จ์ง€ ๊ฐœ๋ฏธ ๋””์ž์ธ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค (์˜ˆ : https://stackoverflow.com/questions/61220424/material-ui-drawer-finddomnode-is-deprecated-in-strictmode). ๊ตฌํ˜„ํ•˜๊ธฐ ๊ฐ€์žฅ ์‰ฌ์šด ์ˆ˜์ •์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๋ฏธ ๊ทธ๊ฒƒ์— ๋›ฐ์–ด ๋“ค์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ฒ„ํŠผ์—๋งŒ ์˜ํ–ฅ์„์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฏธ ๋””์ž์ธ ์ œ์ž‘์ž๊ฐ€ ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์„ ์ฒ ์ €ํžˆ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ •ํ•  ์‹œ๊ฐ„์ด์žˆ์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค .... ๊ทธ๋“ค์˜ ๋ชจ๋“  ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์–ป์œผ์‹ญ์‹œ์˜ค. ๊ทธ๋ž˜์„œ ์–ด๋–ค ํ•ด๊ฒฐ์ฑ…์ด ๋  ๊ฒƒ์ธ์ง€๋Š” ๋‚˜๋จธ์ง€์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค!

ํŽธ์ง‘ํ•˜๋‹ค:
์ด๊ฒƒ์ด "์‰ฌ์šด ์ˆ˜์ •"์ด ์•„๋‹Œ ์ด์œ ๋ฅผ ๊ถ๊ธˆํ•ดํ•˜๋Š” ์‚ฌ๋žŒ์„ ์œ„ํ•ด findDomNode๋ฅผ ๋ฒ„๋ฆฌ๊ธฐ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ ๋œ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://medium.com/trabe/getting-rid-of-finddomnode-method-in-your-react-application-a0d7093b2660
์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ์— ์˜ํ–ฅ์„ ์ค€๋‹ค๊ณ  ๊ฐ€์ • ํ•  ๋•Œ์ด ์ž‘์—…์€ ๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜ "์ž์œ ๋กœ์šด"์‹œ๊ฐ„์ด์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ํฐ ์ž‘์—…์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ

์ด ํ‹ฐ์ผ“์€ 7 ๊ฐœ์›” ์ด์ƒ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€

27755์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ pull ์š”์ฒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

+1

์ด ํ”„๋กœ์ ํŠธ์˜ ๊ทœ์น™์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋‹ค๋ฅธ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ "same"๋ฐ "+1"๋Œ“๊ธ€์„ ์ŠคํŒธํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ๊ธด๊ธ‰ํ•œ ๋ฌธ์ œ์ธ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ์ด๋ฅผ ์ž˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ๋ฆผ์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
  • ์•Œ๋ฆผ์— ์ŠคํŒธ์ด ๋งŽ์€ ๋‹ค๋ฅธ ๊ฐ์‹œ์ž์—๊ฒŒ๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” ์ฃผ์š” ์ด์Šˆ์—์„œ : +1 :์„ ์‚ฌ์šฉํ•˜์—ฌ์ด ์ด์Šˆ์— ๋Œ€ํ•œ ์ง€์›์„ ๊ฐ„๋‹จํžˆ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/ant-design/ant-design/pull/27755 ์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ • ์ž‘์—…์„ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋„์„œ๊ด€์ด ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ [email protected] ์—์„œ์ด ๊ฒฝ๊ณ ๊ฐ€ ๊ณ„์† ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค
์–‘์‹ ๋‚ด๋ถ€์—์„œ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋น„๋™๊ธฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๊ฐ€ ์‹คํ–‰ ๋œ ํ›„์— ๋งŒ โ€‹โ€‹๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Screen Shot 2020-11-18 at 5 07 27 PM

[email protected] ์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰