Releases: foca-js/foca
Releases · foca-js/foca
v3.2.0
v3.1.1
- computed内使用数组状态数据时,更新数组不会触发重新计算
- 删除无用类型
ComputedRef
v3.1.0
持久化引擎支持同步
引擎。因此可以直接使用浏览器内置的 localStorage 和 sessionStorage 接口
v3.0.0
破坏性更新
- 删除hooks函数
useDefined
- 删除模型内
onDestroy
事件钩子 - 删除持久化
maxAge
配置
store.init({
persist: [
{
key: 'key',
- maxAge: 3600,
engines: engines.localStorage,
models: [],
}
]
})
- 非hooks状态下计算属性使用执行函数的方式获取
const model = defineModel('model', {
initialState: { firstName: '', lastName: '' },
methods: {
myMethod() {
- return this.fullName.value;
+ return this.fullName();
}
},
computed: {
fullName() {
return this.state.firstName + this.state.lastName;
},
}
});
新特性
- 开启持久化的模型会立即存储initialState
- 计算属性支持传递参数
const model = defineModel('model', {
initialState: { firstName: '', lastName: '' },
methods: {
myMethod() {
+ const profile = this.profile(30, 'addr', false);
}
},
computed: {
fullName() {
return this.state.firstName + this.state.lastName;
},
+ profile(age: number, address: string, coding: boolean = true) {
+ return this.fullName() + '-' + age + address + coding;
+ },
}
});
const App: FC = () => {
const fullName = useComputed(model.fullName);
+ const profile = useComputed(model.profile, 20, 'my-address');
}
- 持久化增加 dump 和 load 两个系列化函数
const model = defineModel('model', {
initialState: { firstName: 'tick', lastName: 'tock' },
persist: {
+ dump(state) {
+ return state.firstName;
+ },
+ load(dumpData) {
+ return { ...this.initialState, firstName: dumpData };
+ },
}
});
- 持久化新增合并模式
replace
,merge
(默认),deep-merge
store.init({
persist: [
{
key: 'item1',
version: '1.0',
+ merge: 'replace',
engine: engines.localStorage,
models: [],
},
]
})
其它
- npm包转译为ES5语法以兼容更早的浏览器 (#41)
- immer版本降级:10.0.2 -> 9.0.21
- react-redux版本升级:8.1.2 -> 8.1.3
v2.0.1
v2.0.0
- 不再兼容 IE 浏览器
- 最小 React 版本为 18
- 最小 TypeScript 版本为 5.0
- immer 版本从 9.0.21 升级到 10.0.2
- react-redux 版本从 8.0.5 升级到 8.1.1
- 删除废弃字段
actions
和effects
v1.3.1
v1.3.0
日志
setState
的回调模式支持返回不完整数据
defineModel('unique_name', {
initialState: { a: 'a', b: 'b' },
methods: {
test() {
this.setState(() => {
return { a: 'xxx' };
});
console.log(this.state); // { a: 'xxx', b: 'b' }
},
},
});
- 传给 reducer 的
initialState
不再执行深拷贝,而是在开发环境下进行冻结处理以防开发者错误操作
const initialState = { a: 'a', b: 'b' };
defineModel('unique_name', {
initialState: initialState,
});
// 修改失败,严格模式下会报错
// TypeError: Cannot assign to read only property 'a' of object '#<Object>'
initialState.a = 'xxx';
提交
v1.2.1
v1.2.0
日志
- 重命名 actions 为 reducers (#29)
- 重命名 effects 为 methods (#29)
- exports 导出 package.json 文件
- 不再支持[email protected]