Драгула с реагировать - Uncaught TypeError: Reaction_dragula_1.default не является функцией

Я пытаюсь проверить Dragula с реакцией на перетаскивание и нахождение проблем. Я получаю ошибку:

Uncaught TypeError: Reaction_dragula_1.default не является функцией

Любой сталкивался с этой проблемой или подсказкой, чтобы решить проблему.

import * as React from "react";
import * as ReactDOM from 'react-dom';
import Dragula from 'react-dragula';

export class MultiPicklist extends React.Component {
    render() {
        return (<div className="swish-input-textarea">
                <div className='parent'>
                    <div className='wrapper'>
                        <div id='left-defaults' className='container' ref={this.dragulaDecorator} >
                            <div>Element 0</div>
                            <div>Element 1</div>
                            <div>Element 2</div>
                            <div>Element 3</div>
                        </div>
                        <div id='right-defaults' className='container'>
                            <div>Element a</div>
                            <div>Element b</div>
                            <div>Element c</div>
                            <div>Element d</div>
                            <div>Element e</div>
                        </div>
                    </div>
                </div>
                </div>);
    },
        dragulaDecorator = (componentBackingInstance) => {
            if (componentBackingInstance) {
                let options = { };
                console.log('componentBackingInstance');
                console.log(componentBackingInstance);
                Dragula([componentBackingInstance]);
             }
  };    

}

1 ответ

Я вижу, вы немного возитесь с синтаксисом класса ES6. Попробуйте вытащить за пределы определения класса обратный вызов ref:

import * as React from "react";
import * as ReactDOM from 'react-dom';
import Dragula from 'react-dragula';

export class MultiPicklist extends React.Component {
    render() {
        return (<div className="swish-input-textarea">
                <div className='parent'>
                    <div className='wrapper'>
                        <div id='left-defaults' className='container' ref={dragulaDecorator} >
                            <div>Element 0</div>
                            <div>Element 1</div>
                            <div>Element 2</div>
                            <div>Element 3</div>
                    </div>
                        <div id='right-defaults' className='container'>
                            <div>Element a</div>
                            <div>Element b</div>
                            <div>Element c</div>
                            <div>Element d</div>
                            <div>Element e</div>
                        </div>
                    </div>
                </div>
                </div>);
    }

}  
const dragulaDecorator = (componentBackingInstance) => {
        if (componentBackingInstance) {
            let options = { };
            console.log('componentBackingInstance');
            console.log(componentBackingInstance);
            Dragula([componentBackingInstance]);
         }
};

Вы также можете использовать функции стрелок ES6 в методах класса, но для этого вам нужно включить экспериментальные функции в Babel, чтобы компилировать их. Проверьте этот вопрос SO для более подробной информации: /questions/14551690/kak-ispolzovat-funktsii-strelok-otkryityie-polya-klassov-v-kachestve-metodov-klassa/14551711#14551711

Другие вопросы по тегам