首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mobx方法的对象不是函数

Mobx方法的对象不是函数
EN

Stack Overflow用户
提问于 2020-04-28 14:28:59
回答 1查看 1.8K关注 0票数 0

我试图通过mobx数组访问方法的objet (此处为greet()方法),但我仍然坚持:

TypeError: person.greet不是一个函数

Person类

我有一个Person类,使用greet方法:

代码语言:javascript
复制
export class Person {
    public id: number = Date.now();
    public firstName!: string;
    public lastName!: string;

    public greet() : string {
        return "Hello!";
    }
};

商店

我的店看起来:

代码语言:javascript
复制
import { persist } from "mobx-persist";
import { observable, computed, action } from "mobx";
import { Person } from "../models/Person";

export class PersonStore {

    @persist('list')
    @observable
    personList: Person[] = [];

    @computed get entries(): Person[] {
        return this.personList.slice();
    };
};

组件中的

在我的部分中,我以这样的方式传递列表:

代码语言:javascript
复制
const PeoplePage_: React.FunctionComponent<{ personStore: PersonStore }> = ({ personStore }) => {

    return (
        <PeoplePage
            personList={personStore.entries} />
    );
};
export default inject("personStore")(observer(PeoplePage_));

然后在我的PeoplePage组件中,当我执行如下操作时:

代码语言:javascript
复制
personList[0].greet()

我收到错误了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-28 14:51:51

问题是关于lib mobx-persist,然后是行@persist('list')

这意味着我的数组是以普通对象样式({firstname: 'foo', lastname: 'foo'})存储和检索的。

诀窍是在组件中构造一个新的Person

我添加了一个构造函数,并添加了一个objet来重新填充。

代码语言:javascript
复制
export class Person {
    public id: number = Date.now();
    public firstName!: string;
    public lastName!: string;

    constructor(private obj: any = null) {
        if(obj){Object.assign(this, obj)}
    }

    public greet(): string {
        return `Hello, ${this.firstName}`;
    }
};

然后在我的部分:

new Person(person).greet()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61482664

复制
相关文章

相似问题

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