Невозможно заставить работать mobx без декораторов. Простой пример - PullRequest
0 голосов
/ 04 августа 2020

У меня есть класс userStore ниже.

import {observable, action, decorate, when, computed} from 'mobx'


import { requests, Scripts } from 'axios.js'

import { create, persist } from 'mobx-persist'

import userAltImage from 'images/user.png'


const hydrate = create({
  storage: localStorage,
  jsonify: false,
});

class UserStore {

        // scriptsPerRequest = 100
        // less_or_more = 'first'

        constructor(){
        }
        avatar = {
                file: userAltImage,
                width: '50px',
                height: '50px'

        }

        scripts = {
                self: []
        }

        setAvatar(file,width, height){
                this.avatar.file = file
                this.avatar.width = width

                this.avatar.height = height

        }

        // loadSelfScripts(){
        //      Scripts.byAuthor(1, this.scriptsPerRequest, this.less_or_more,)
        // }



}

decorate(UserStore,{
        avatar: [persist('object'), observable],
        scripts: [persist('object'), observable],
        setAvatar: action
})




var userStore = new UserStore()
hydrate('user', userStore ).then( () => console.log('userStore hydrated!'))


export default userStore

Позже в другом компоненте X. js

У меня есть этот код

handledata = e =>{
    .....
    this.props.userStore.setAvatar(new_image_data, '50px', '50px')
}

Когда это запускается , mobx работает правильно, и объект userStore Avatar был успешно обновлен. Но когда я обновляю sh страницу, данные теряются ... это указывает на то, что mobx persist не работает для сохранения хранилища, даже если консоль сообщает 'userStore Hydrated' после запуска функции Hydrate.

What я делаю не так? Пожалуйста, порекомендуйте. Я не могу заставить это работать.

...