React-dnd: 타사 ꡬ성 μš”μ†Œλ₯Ό λ“œλž˜κ·Έ μ†ŒμŠ€λ‘œ μ‚¬μš©ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

에 λ§Œλ“  2015λ…„ 12μ›” 18일  Β·  9μ½”λ©˜νŠΈ  Β·  좜처: react-dnd/react-dnd

타사 ꡬ성 μš”μ†Œ(이 경우 <ListGroupItem> from React Bootstrap )λ₯Ό λ“œλž˜κ·Έ μ†ŒμŠ€λ‘œ μ‚¬μš©ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. connectReactSource λ₯Ό ν˜ΈμΆœν•˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

이제 κΈ°λ³Έ μš”μ†Œ λ…Έλ“œλ§Œ connectDragSource()에 전달할 수 μžˆμŠ΅λ‹ˆλ‹€. ListGroupItem을

, λ˜λŠ” λ“œλž˜κ·Έ μ†ŒμŠ€ λ˜λŠ” λ“œλ‘­ λŒ€μƒ 자체둜 μ „ν™˜ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ <div> λž˜ν•‘ν•˜λ©΄ <li> 이어야 ν•˜κΈ° λ•Œλ¬Έμ— λ§ˆν¬μ—…κ³Ό μŠ€νƒ€μΌμ΄ 엉망이 λ©λ‹ˆλ‹€. λ‹€λ₯Έ μ˜΅μ…˜μ€ λ“œλž˜κ·Έ μ†ŒμŠ€λ‘œ λ°”κΎΈλŠ” κ²ƒμ΄μ§€λ§Œ 타사 ꡬ성 μš”μ†Œμ˜ μ†ŒμŠ€λ₯Ό νŽΈμ§‘ν•˜μ§€ μ•Šκ³ λŠ” 방법을 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ μ˜³μ€ 일은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

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

이제 인터넷 검색에도 이 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€ :-)

λ‹€ν–‰μŠ€λŸ½κ²Œλ„! :이λ₯Ό λ“œλŸ¬λ‚΄κ³  웃닀:

κ·Έλƒ₯ 당신이 체인에 μ‚¬μš©ν•˜λŠ” 경우, μ•½κ°„μ˜ 정밀도λ₯Ό μΆ”κ°€ν•˜λ €λ©΄ connect*() λ‹Ήμ‹ μ˜ 톡화 render() λŒ€μ‹ μ— 당신이 ν•  ν•„μš”κ°€,의, 같은 λœ»μ„ μœ„ μ ‘κ·Όν•˜μ§€ μž‘μ—… μˆ˜ν–‰μ›:

ref={instance => {
  const node = findDOMNode(instance);
  connectDragSource(node);
  connectDropTarget(node);
}}

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

쒋은 질문. λ‚˜λŠ” 당신이 이것을 ν•  수 μžˆμ–΄μ•Όν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€ :

import { findDOMNode } from 'react-dom';

class DraggableListGroupItem extends Component {
  render() {
    const { connectDragSource, ...rest } = this.props;
    return (
      <ListGroupItem
        {...rest}
        ref={instance => connectDragSource(findDOMNode(instance))}
      />
    );
  }
}

export default DragSource(...)(DraggableListGroupItem);

이것은 connect*() ν•¨μˆ˜κ°€ μ „λ‹¬ν•œ λ‚΄μš©μ„ 보기 λ•Œλ¬Έμ— μž‘λ™ν•©λ‹ˆλ‹€. μ„ μ–Έμ μœΌλ‘œ(DOM React μš”μ†Œλ₯Ό μ „λ‹¬ν•˜κ³  λ°˜ν™˜μœΌλ‘œ DOM React μš”μ†Œλ₯Ό κ°€μ Έμ˜΄) λ˜λŠ” λͺ…λ Ήμ μœΌλ‘œ(DOM λ…Έλ“œλ‘œ ν˜ΈμΆœν•˜κ³  λ‚˜μ€‘μ— null 둜 ν˜ΈμΆœν•˜λŠ” 것을 μžŠμ§€ λ§ˆμ‹­μ‹œμ˜€) refs μž‘μ—…μ²˜λŸΌ ).

(μ΄λŠ” λ˜ν•œ λ‹€λ₯Έ DOM μš”μ†Œλ₯Ό λ“œλž˜κ·Έ μ†ŒμŠ€λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” 자유λ₯Ό μ€λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ findDOMNode() μ—μ„œ κ°€μ Έμ˜¨ λ…Έλ“œλ₯Ό 쿼리할 수 μžˆμŠ΅λ‹ˆλ‹€. 내뢀에 μ˜μ‘΄ν•˜λŠ” 것은 쒋지 μ•ŠμœΌλ―€λ‘œ μ΅œν›„μ˜ μˆ˜λ‹¨μœΌλ‘œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. 타사 ꡬ성 μš”μ†Œμ˜ DOM ꡬ쑰)

이것은 λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 이제 쀑첩이 μ˜¬λ°”λ₯΄μ§€λ§Œ μš”μ†Œλ₯Ό 끌 수 μ—†μœΌλ©° μ½˜μ†”μ— λ‹€μŒ 였λ₯˜κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

Unhandled promise rejection TypeError: (0 , _reactDom2.default) is not a function(…)

λ‚˜λŠ” 당신이 μž…λ ₯ν–ˆλ‹€κ³  λ―ΏμŠ΅λ‹ˆλ‹€

import findDOMNode from 'react-dom';

λ³΄λ‹€λŠ”

import { findDOMNode } from 'react-dom';

μ‹€μ œλ‘œ react-dom μ—λŠ” κΈ°λ³Έ 내보내기가 μ—†μœΌλ―€λ‘œ findDOMNode λΌλŠ” νŠΉμ • 내보내기λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. κΈ°λ³Έ 내보내기와 λͺ…λͺ…λœ λ‚΄λ³΄λ‚΄κΈ°μ˜ 차이점에 λŒ€ν•œ μΆ”κ°€ 정보: http://exploringjs.com/es6/ch_modules.html

μΆ•μ†Œλœ 예제λ₯Ό μž‘μ„±ν•˜λ €κ³  ν•˜λŠ” 도쀑에 버그λ₯Ό λ¨Όμ € μž‘μ•˜μŠ΅λ‹ˆλ‹€!

κΈ°λ³Έ 내보내기와 λͺ…λͺ…λœ λ‚΄λ³΄λ‚΄κΈ°μ˜ 차이점에 λŒ€ν•΄ μ•Œκ³  μžˆμ§€λ§Œ μ–΄λ–€ 것이 ν•„μš”ν•œμ§€ 항상 μ•Œμ§€ λͺ»ν•˜κ³  디버그 도ꡬ가 무슨 일이 μΌμ–΄λ‚˜κ³  μžˆλŠ”μ§€ λ³΄μ—¬μ£ΌλŠ” 였λ₯˜ λ©”μ‹œμ§€λ₯Ό μ œκ³΅ν•˜λŠ” 데 쒋지 μ•ŠμŠ΅λ‹ˆλ‹€. 이제 Webpack에 μ˜ν•΄ λ¬Έμ œκ°€ μˆ˜μ •λ˜μ—ˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³  ν•΄λ‹Ή 였λ₯˜ λ©”μ‹œμ§€κ°€ 문제λ₯Ό κ°€λ¦¬ν‚€λŠ” 방법을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. κ°•μ˜ κ°μ‚¬ν•©λ‹ˆλ‹€!

μΆ”μ‹ : 이것을 λ¬Έμ„œμ— μΆ”κ°€ν•˜κΈ° μœ„ν•΄ ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό μ œμΆœν•œλ‹€λ©΄(μ‹œκ°„μ΄ μžˆμ„μ§€ λͺ¨λ₯΄κ² μ§€λ§Œ) 어디에 λ„£λ‚˜μš”? connectDragSource 였λ₯˜κ°€ 이 μ†”λ£¨μ…˜μ„ κ°€λ¦¬ν‚€λŠ” 경우 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν˜„μž¬ λ©”μ‹œμ§€κ°€ μΆ©λΆ„ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 이제 인터넷 검색에도 이 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€ :-)

그건 κ·Έλ ‡κ³  λ‚˜λŠ” κ·€ν•˜μ˜ μ§ˆλ¬Έμ„ λ‹€μ‹œ 읽고 <div> ꡬ체적으둜 λž©ν•‘ν•  ν•„μš”κ°€ μ—†λ‹€λŠ” 점을 κ°•μ‘°ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 였λ₯˜ λ©”μ‹œμ§€μ˜ μš”μ μ€ connectDragSource() κ°€ <div> , <li> λ˜λŠ” 기타 λͺ¨λ“  DOM μš”μ†Œλ₯Ό λž˜ν•‘ν•΄μ•Ό ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μœ„μ˜ ν•΄κ²° 방법은 μ‚¬μš©μž 지정 ꡬ성 μš”μ†Œμ—λ§Œ ν•„μš”ν•©λ‹ˆλ‹€.

이제 인터넷 검색에도 이 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€ :-)

λ‹€ν–‰μŠ€λŸ½κ²Œλ„! :이λ₯Ό λ“œλŸ¬λ‚΄κ³  웃닀:

κ·Έλƒ₯ 당신이 체인에 μ‚¬μš©ν•˜λŠ” 경우, μ•½κ°„μ˜ 정밀도λ₯Ό μΆ”κ°€ν•˜λ €λ©΄ connect*() λ‹Ήμ‹ μ˜ 톡화 render() λŒ€μ‹ μ— 당신이 ν•  ν•„μš”κ°€,의, 같은 λœ»μ„ μœ„ μ ‘κ·Όν•˜μ§€ μž‘μ—… μˆ˜ν–‰μ›:

ref={instance => {
  const node = findDOMNode(instance);
  connectDragSource(node);
  connectDropTarget(node);
}}

이에 λŒ€ν•œ 2가지 질문:
Q1. 3rd λΆ€ν’ˆ 라이브러리λ₯Ό λ“œλž˜κ·Έ λŒ€μƒμœΌλ‘œ μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μ‚¬μš© μ‚¬λ‘€λŠ” λ°˜μ‘ 슀트랩 "μ»¨ν…Œμ΄λ„ˆ"λ₯Ό λŒ€μƒμœΌλ‘œ μ‚¬μš©ν•˜κ³  νŽ˜μ΄μ§€λ₯Ό λΉŒλ“œν•˜κΈ° μœ„ν•΄ "ν–‰" λ˜λŠ” κ·Έ μ•ˆμ— λ‹€λ₯Έ ꡬ성 μš”μ†Œλ₯Ό μ‚­μ œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.
Q2. findDOMNodeκ°€ κΈ°λŠ₯ ꡬ성 μš”μ†Œμ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 일뢀 타사 ꡬ성 μš”μ†Œκ°€ μž‘λ™ν•˜λŠ” 경우 λŒμ–΄μ„œ 놓기λ₯Ό μˆ˜ν–‰ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

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