React: `data-reactroot = ""`μš”μ†Œκ°€`λ‚΄λΆ€μ—μžˆλŠ” 경우 μ„œλ²„ λ Œλ”λ§μ—μ„œ 손싀 됨<context.provider>`</context.provider>

에 λ§Œλ“  2019λ…„ 03μ›” 05일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: facebook/react

κΈ°λŠ₯ 을 μš”μ²­ν•˜κ±°λ‚˜ 버그λ₯Όλ³΄κ³  ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

κ³€μΆ©.

ν˜„μž¬ 행동은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

호좜 .renderToString() 에 <React.Fragment><div>Hello!</div></React.Fragment> 생산 <div data-reactroot="">Hello!</div> .

κ·ΈλŸ¬λ‚˜ "보이지 μ•ŠλŠ”"React μš”μ†Œ λ‚΄μ˜ DOM 루트 μš”μ†Œμ˜ λ‹€λ₯Έ λ§Žμ€ 쑰합은 data-reactroot="" 없이 λ Œλ”λ§λ©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ λ‹€μŒμ˜ λͺ¨λ“  μ œν’ˆμ€ <div>Hello!</div> ( data-reactroot="" μ œμ™Έ)λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

<React.Fragment><React.Fragment><div>Hello!</div></React.Fragment></React.Fragment>

<Context.Provider><div>Hello!</div></Context.Provider>

<Context.Consumer>{() => <div>Hello!</div>}</Context.Consumer>

<React.StrictMode><div>Hello!</div></React.StrictMode>

ν˜„μž¬ λ™μž‘μ΄ 버그 인 경우 μž¬ν˜„ 단계λ₯Ό μ œκ³΅ν•˜κ³  κ°€λŠ₯ν•˜λ©΄ λ¬Έμ œμ— λŒ€ν•œ μ΅œμ†Œν•œμ˜ 데λͺ¨λ₯Ό μ œκ³΅ν•˜μ‹­μ‹œμ˜€. μ•„λž˜μ— JSFiddle (https://jsfiddle.net/Luktwrdm/) λ˜λŠ” CodeSandbox (https://codesandbox.io/s/new) μ˜ˆμ œμ— λŒ€ν•œ 링크λ₯Ό λΆ™μ—¬ λ„£μœΌμ‹­μ‹œμ˜€.

μœ„ μ°Έμ‘°.

μ˜ˆμƒλ˜λŠ” λ™μž‘μ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?

μœ„μ˜ μ˜ˆλŠ” div μš”μ†Œμ— data-reactroot="" λ₯Ό ν¬ν•¨ν•˜λŠ” 마크 업을 μƒμ„±ν•΄μ•Όν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.

μ–΄λ–€ λ²„μ „μ˜ React와 μ–΄λ–€ λΈŒλΌμš°μ € / OS가이 문제의 영ν–₯을 λ°›μŠ΅λ‹ˆκΉŒ?

λͺ¨λ“  버전> = 16.7.0, 이전 버전에도 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

이것은 μ‚¬μ†Œν•œ λ¬Έμ œμž…λ‹ˆλ‹€ - λ‚˜λŠ” 마크 업을 μ‚¬μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ μž¬μˆ˜λ˜λŠ” κ²½μš°μ—λ§Œ 영ν–₯을 생각 .render() λ³΄λ‹€λŠ” .hydrate() ꢌμž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ μ‚¬μš© -. κ·ΈλŸ¬λ‚˜ .render() λ₯Ό μ‚¬μš©ν•˜μ—¬ 재수 ν™”ν•˜λŠ” 것은 μ—¬μ „νžˆ β€‹β€‹κ³΅μ‹μ μœΌλ‘œ μ§€μ›λ©λ‹ˆλ‹€.

μˆ˜μ •μ„ κ΅¬ν˜„ν•˜κ³  PR을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ˜ˆμƒλ˜λŠ” λ™μž‘μ΄ λ‚΄κ°€ μƒκ°ν•˜λŠ” 것과 이것이 μ‹€μ œλ‘œ λ²„κ·ΈλΌλŠ” 것을 λˆ„κ΅¬λ“ μ§€ 확인할 수 μžˆμŠ΅λ‹ˆκΉŒ?

Server Rendering Bug

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

큰 확인. μ‹ μ†ν•œ 닡변에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. κ°€λŠ₯ν•œ ν•œ 빨리 PR을 μ œμΆœν•˜κ² μŠ΅λ‹ˆλ‹€. μ•žμœΌλ‘œ λͺ‡ μ£Ό 내에 μ œμΆœν•΄μ•Όν•©λ‹ˆλ‹€.

λͺ¨λ“  5 λŒ“κΈ€

이것은 λ²„κ·Έμ²˜λŸΌ λ“€λ¦½λ‹ˆλ‹€. μˆ˜μ •μ„ ν™˜μ˜ν•©λ‹ˆλ‹€.

큰 확인. μ‹ μ†ν•œ 닡변에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. κ°€λŠ₯ν•œ ν•œ 빨리 PR을 μ œμΆœν•˜κ² μŠ΅λ‹ˆλ‹€. μ•žμœΌλ‘œ λͺ‡ μ£Ό 내에 μ œμΆœν•΄μ•Όν•©λ‹ˆλ‹€.

PR # 15023을 μ œμΆœν–ˆμŠ΅λ‹ˆλ‹€.

@gaearon λˆ„κ΅¬λ“ μ§€ PR # 15023μ—μ„œ λ‚΄ μˆ˜μ • 사항을 λ³Ό κΈ°νšŒκ°€ μžˆμ—ˆμŠ΅λ‹ˆκΉŒ?

이제 react-apolloκ°€ Context APIλ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— λΉŒλ“œκ°€ μ†μƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰