2016-05-19 9 views
2

Я использую реагировать родные и реагировать-реле, поэтому я имею следующий .babelrc файл:Разбитого в функции автоматического связывания стрелки для используемых модулей узлов при использовании реагировать-выходец с реагировать-реле

{ 
    "sourceMaps": "both", 
    "presets": [ 
    "./plugins/babelRelayPlugin", 
    "react-native" 
    ], 
    "passPerPreset": true 
} 

Добавление зависимости, которая использует функции стрелок в своих компонентах, так как MKIconToggle из набора для реагирования на нативный материал (https://github.com/xinthink/react-native-material-kit) не получается перерисовываться правильно и эта ссылка потеряна/неверна.

Исходный код, который в конечном счете, приводит к ошибке выглядит следующим образом:

_onLayout = (evt) => { 
    this._onLayoutChange(evt.nativeEvent.layout); 

    if (this.props.onLayout) { 
     this.props.onLayout(evt); 
    } 
    }; 

Пострадавшая фрагмент кода в случае ошибки:

d(55, function(global, require, module, exports) {var _this = this, 
    _jsxFileName = '.../node_modules/react-native-material-kit/lib/mdl/Ripple.js'; 
var Ripple = function (_Component) { 
    babelHelpers.inherits(Ripple, _Component); 

    function Ripple(props) { 
    babelHelpers.classCallCheck(this, Ripple); 

    var _this2 = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(Ripple).call(this, props)); 

    _this2._onLayout = function (evt) { 
     _this._onLayoutChange(evt.nativeEvent.layout); 

     if (_this.props.onLayout) { 
     _this.props.onLayout(evt); 
     } 
    }; 

Ссылка _this равно окно, за счет использования _this _this2 создается и используется, но _это все еще используется в функциях стрелок (_onLayout)

Когда я удаляю файл babelrc и запускает по умолчанию Я получаю следующий transpiled JS, и она работает:

__d(921, function(global, require, module, exports) {var jsxFileName='...../node_modules/react-native-material-kit/lib/mdl/Ripple.js'; 

Component=React.Component;var Animated=React.Animated;var View=React.View;var PropTypes=React.PropTypes;var Platform=React.Platform;var Ripple=function(_Component){ 
babelHelpers.inherits(Ripple,_Component); 
function Ripple(props){babelHelpers.classCallCheck(this,Ripple); 
var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(Ripple).call(this, props)); 
_this._onLayout=function(evt){ 
_this._onLayoutChange(evt.nativeEvent.layout); 

if(_this.props.onLayout){ 
_this.props.onLayout(evt);}};_this. 

Я не совсем уверен, что вызывает вопрос, я могу это исправить путем связывания функции в конструкторе, но я бы предпочел не менять код в зависимости напрямую , Я уже пытался добавить различные пресеты в конфиг babel: es2015, stage-0, babel-preset-react-native-stage-0 и некоторые другие без везения.

Забавно, что это поведение не встречается во всех зависимостях, а также не в моем собственном коде, если я просто пишу один компонент со стрелкой в ​​нем и использую babelrc, который он все еще работает.

Я не могу на 100% воспроизвести это поведение, я видел его и с другими зависимостями, но он, кажется, приходит и уходит, хотя, как только это происходит, оно обычно не исчезает.

+0

Вы исправились? –

ответ

0

babel-preset-react-native-stage-0 сделал это в конце. Не знаете, что осталось в кеше или где-то еще, но после очистки все это: watchman watch-del-all rm -rf $TMPDIR/react-* rm -rf node_modules npm install npm start --reset-cache мой проект и все его функции стрелок работают.