[MobX State Tree数据组件化开发][3]:选择正确的types.xxx

本文介绍了MobX State Tree在数据组件化开发中如何选择正确的types,包括基础类型如string、number、boolean,复合类型如model、array、map,以及可选类型、自定义类型、联合类型等,帮助开发者更好地定义状态数据的类型。
摘要由CSDN通过智能技术生成
?系列文章目录?

定义Model时,需要正确地定义props中各字段的类型。本文将对MST提供的各种类型以及类型的工厂方法进行简单的介绍,方便同学们在定义props时挑选正确的类型。

前提

定义props之前,有一个前提是,你已经明确地知道这个Model中状态的数据类型。

如果Model用于存放由后端API返回的数据,那么一定要和后端确认返回值在所有情况下的类型。比如,某个字段在没有值的时候你以为会给一个'',而后端却给了个null;或者某个数组你以为会给你一个空数组[],他又甩你一个null如果你不打算自己编写一个标准化数据的方法,那一定要和数据的提供方确定这些细节。

基础类型

types.string

定义一个字符串类型字段。

types.number

定义一个数值类型字段。

types.boolean

定义一个布尔类型字段。

types.integer

定义一个整数类型字段。

注意,即使是TypeScript中也没有“整数”这个类型,在编码时,传入一个带小数的值TypeScript也无法发现其中的类型错误。如无必要,请使用types.number

types.Date

定义一个日期类型字段。

这个类型存储的值是标准的Date对象。在设置值时,可以选择传入数值类型的时间戳或者Date对象。

export const Model = types
    .model({
        date: types.Date 
    })
    .actions(self => ({
        setDate (val: Date | number) {
            self.date = date;
        }
    }));
复制代码

types.null

定义一个值为null的类型字段。

types.undefined

定义一个值为undefined的类型字段。

复合类型

types.model

定义一个对象类型的字段。

types.array

定义一个数组类型的字段。

types.array(types.string);
复制代码

上面的代码定义了一个字符串数组的类型。

types.map

定义一个map类型的字段。该map的key都为字符串类型,map的值都为指定类型。

types.map(types.number);
复制代码

可选类型,types.optional

根据传入的参数,定义一个带有默认值的可选类型。

types.optional是一个方法,方法有两个参数,第一个参数是数据的真实类型,第二个参数是数据的默认值。

types.optional(types.number, 1);
复制代码

上面的代码定义了一个默认值为1的数值类型。

注意,types.array或者types.map定义的类型自带默认值(array为[],map为{}),也就是说,下面两种定义的结果是一样的:

// 使用types.optional
types.optional(types.array(types.number), []);
types.optional(types.map(types.number), {});

// 不使用types.optional
types.array(types.number);
types.map(types.number);
复制代码

如果要设置的默认值与types.arraytypes.map自带的默认值相同,那么就不需要使用types.optional

自定义类型,types.custom</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值