首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本机mobx值不是原始的。

本机mobx值不是原始的。
EN

Stack Overflow用户
提问于 2018-04-07 19:58:00
回答 2查看 1.7K关注 0票数 4

我构建了react本地应用程序,我正在使用mobx。在存储区中,有一个名为tools的数组,当我试图将值赋值到数组时,就会得到数组。

遇到一个由反应或观察者组件引发的未察觉的异常,在:'ReactionReaction@1 Error: serializr这个值不是原始的: 14

代码语言:javascript
复制
 class Task {
@persist @observable id = ''
@persist @observable title = ''
@persist @observable description = ''
@persist @observable tools = []

constructor(id,title,description,tools){
    console.log('new task')
    console.log(id,title,description,tools)
    this.id = id
    // this.title = title
    this.description = description
    this.tools = tools;

}

TasksStore -在这里我创建了一个新的任务对象。

代码语言:javascript
复制
    import { observable, action, computed } from 'mobx'
import { persist } from 'mobx-persist'
import Task from '../Task/Task'
class TasksStore {

    @persist('list',Task) @observable tasks = []
    @observable storeHydrated = false;


    @action done(){
        this.storeHydrated = true

    }

    @action addNewTask(task){
        this.tasks.push(new Task(0,task.title,task.description,task.tools))
        console.log('tasks is',this.tasks)
    }






}


const taskStore = new TasksStore();
export default taskStore;

当我移除

代码语言:javascript
复制
    @persist @observable tools = []

这个应用程序运行良好。

EN

回答 2

Stack Overflow用户

发布于 2018-07-25 06:29:56

代码语言:javascript
复制
@persist('list') @observable tools = [] 

尝试设置工具的类型。看起来不错

票数 4
EN

Stack Overflow用户

发布于 2018-11-16 08:34:28

我有同样的problem.The解决方案,使Task类可以像这样序列化:

代码语言:javascript
复制
class Task {
 @serializable @observable id = ''
 @serializable @observable title = ''
 @serializable @observable description = ''
 @serializable(list(primitive()))   @observable tools = []

constructor(id,title,description,tools){
  console.log('new task')
  console.log(id,title,description,tools)
  this.id = id
  // this.title = title
  this.description = description
  this.tools = tools;  
}

并将您现在可序列化的任务持久化到您的商店中:

代码语言:javascript
复制
class Store{
  @persist('object', Task)
  @observable
  public Task= new Task()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49711437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档