Длина массива не определена в магазине mobx - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь перейти с Redux на Mobx и попытался настроить массив в хранилище mobx, я использую декораторы для установки значения.Я могу вернуть статическое значение из магазина, но длина массива ниже всегда выбрасывает и неопределенное значение.Не уверен, что не так с кодом ниже.Любые предложения?

import {observable, action, computed} from 'mobx';

class FormDataStore {

    @observable formdata = [1,2,3];

    @action updateFormData = (formdata) => {
        this.formdata.push(formdata);
    }

    @computed get readdata() {
        return this.formdata.length;
    }

}

const store = new FormDataStore();
export default store

Ошибка

FormDataStore.js:12 Uncaught TypeError: Cannot read property 'length' of undefined
    at FormDataStore.get (FormDataStore.js:12)
    at trackDerivedFunction$$1 (mobx.module.js:1142)
    at ComputedValue$$1.computeValue (mobx.module.js:934)
    at ComputedValue$$1.trackAndCompute (mobx.module.js:919)
    at ComputedValue$$1.get (mobx.module.js:879)
    at ObservableObjectAdministration$$1.read (mobx.module.js:3822)
    at FormDataStore.get (mobx.module.js:4086)
    at FormDataStore.get (mobx.module.js:295)
    at PreviewWindow.render (PreviewWindow.js:24)
    at Object.allowStateChanges$$1 (mobx.module.js:653)

Ниже приведен способ чтения данных

import React from "react";
import { Container } from "semantic-ui-react";
import Highlight from "react-highlight";
import {inject,observer} from 'mobx-react';

@inject('FormDataStore')


@observer
class PreviewWindow extends React.Component {



  render() {


    const {FormDataStore} = this.props;
    console.log(FormDataStore)

    return (
      <Container>
        <h1>JSon Preview</h1>
      <h1>{FormDataStore.getFormData}</h1>
          <Highlight language="javascript">{FormDataStore.readdata}</Highlight>

      </Container>
    );
  }
}

export default PreviewWindow;

1 Ответ

0 голосов
/ 19 февраля 2019

Порядок плагинов в .babelrc имеет значение, пришлось изменить порядок плагинов в конфигурации babel, чтобы исправить проблему.

/// WRONG

"plugins": [
  "transform-class-properties",
  "transform-decorators-legacy"
]

// RIGHT

"plugins": [
  "transform-decorators-legacy",
  "transform-class-properties"
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...