React-pdf: react ref={}๊ฐ€ ์„ธ ๋ฒˆ ํ˜ธ์ถœ, ์‚ฌ์šฉ์ž ์ง€์ • ์ฝœ๋ฐฑ์ด ์ถฉ๋ถ„ํžˆ ๋„์›€์ด ๋˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2018๋…„ 01์›” 23์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: wojtekmaj/react-pdf

์•ˆ๋…•ํ•˜์„ธ์š”,

๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ์ž˜๋ชป ์ดํ•ดํ–ˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์–ด๋–ค ์ด์œ ๋กœ ref ๊ทธ๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ๋•Œ

<Document
  file={file}
  onLoadSuccess={this.onDocumentLoadSuccess}
  ref={node => console.log(node)}
>
....

๋‹ค์Œ ์ถœ๋ ฅ์ด ์„ธ ๋ฒˆ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

screenshot 2018-01-23 17 13 23

๊ธ€์Ž„, ๋‚˜๋Š” ref ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€์—์„œ ๋ Œ๋”๋ง ๋œ ์œ„์น˜ (offsetTop, offsetLeft ๋“ฑ)๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ref ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์–ป์„ ์ˆ˜์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฏ€๋กœ ๋‚ด ์งˆ๋ฌธ์€ ์„ธ ๋ฒˆ ๋ถˆ๋Ÿฌ๋„ ๊ดœ์ฐฎ์•„?

๋‚ด ์‹ค์ œ ์˜ˆ์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ํŒŒ์ผ์„ ๋กœ๋“œํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.(

์ถ”์‹  ์ฝ”๋“œ๋Š” ์ €์žฅ์†Œ์˜ sample ํด๋”์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

enhancement question

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

์•ˆ๋…•ํ•˜์„ธ์š” @nnnikolay ,
์˜ˆ, ์ด๊ฒƒ์€ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ(์š”์†Œ๊ฐ€ ์•„๋‹Œ ๊ตฌ์„ฑ ์š”์†Œ) React ์—…๋ฐ์ดํŠธ์˜ ์™„์ „ํžˆ ์ •์ƒ์ ์ธ ๋™์ž‘์ž…๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ Document ์ปดํฌ๋„ŒํŠธ์˜ ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๊ฐ€ ๋ Œ๋”๋ง๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋‚˜์œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ถ”์ฒœํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์„ฑ๊ณต์ ์ธ ๋ Œ๋”๋ง์„ ์ˆ˜์‹ ํ•˜๋ ค๋Š” Page ๊ตฌ์„ฑ ์š”์†Œ์— ๋ฐฐ์น˜๋œ onRenderSuccess ์†Œํ’ˆ ์ฝœ๋ฐฑ์ž…๋‹ˆ๋‹ค.

inputRef prop์„ Page ๊ตฌ์„ฑ ์š”์†Œ์— ์ถ”๊ฐ€ํ•˜๋ฉด ref ๊ธฐ๋Šฅ์ด Page ๊ตฌ์„ฑ ์š”์†Œ์— ์˜ํ•ด ๋ Œ๋”๋ง๋œ ๋ฃจํŠธ div ์š”์†Œ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฐฉ๋ฒ•์€ 3.0.0๋ถ€ํ„ฐ Page ๋ฃจํŠธ div๊ฐ€ ์ด์ „๋ณด๋‹ค ์ผ์ฐ ๋‚˜ํƒ€๋‚˜ ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ/๋ Œ๋”๋ง ์ƒํƒœ์ผ ๋•Œ ์Šคํƒ€์ผ์„ ์‰ฝ๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ต์žฅ๊ณผ ์•„์ด๋””์–ด์— ๋Œ€ํ•ด @wojtekmaj ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. onRenderSuccess ๋Š” ์ธ์ˆ˜๋ฅผ ์ทจํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ์ฝœ๋ฐฑ์—์„œ Page DOM ๋…ธ๋“œ ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€์—์„œ ๊ท€ํ•˜์˜ ์กฐ์–ธ์„ ๋“ฃ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  inputRef ๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€์—์„œ <div> ๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š” ์œ„์น˜(์ƒ๋‹จ ๋ฐ ์™ผ์ชฝ ์ขŒํ‘œ)๋ฅผ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์•„, ๋งž์•„. onRenderSuccess๋Š” ์‹ค์ œ๋กœ ๋ Œ๋”๋ง์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋‹จ์ˆœํ™”๋œ ์ฝ”๋“œ).

const pageNumber = 1;

return (
  <Document>
    <Page
      pageNumber={pageNumber}
      onRenderSuccess={() => doSomething(pageNumber)}
    />
  </Document>
);

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฝœ๋ฐฑ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์ด 3.0์šฉ ๋ชฉ๋ก์— ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! :)

๊ฐœ์„  ์‚ฌํ•ญ์€ ๋ฐฉ๊ธˆ ๋ณ‘ํ•ฉ๋˜์—ˆ์œผ๋ฉฐ ๋“ค์–ด์˜ค๋Š” v3.0.0-alpha.3์—์„œ ์ฒ˜์Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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