Ter*_*Lin 6 typescript vue.js vuex
我使用的是Typescript + vue + vuex,状态定义为
const state: CommonDataState = {
clients: [],
version: 1
}
Run Code Online (Sandbox Code Playgroud)
吸气鬼是
const getters: GetterTree<CommonDataState, RootState> = {
getClients: state=> () => { return state.clients; },
getClientById: state => (id: string) => { return state.clients.filter(x => true)[0]; },
getVersion: state => (): Number => { return state.version; }
}
Run Code Online (Sandbox Code Playgroud)
在调用getter getClientById时,
渲染错误:"TypeError:state.clients.filter不是函数"
当我使用console.log()打印state.clients时,它显示结果是一个对象,其默认属性为数组而不是数组类型
{__esModule: true, __ob__: Observer}
default : Array(15)
__esModule : true
__ob__ : Observer {value: {…}, dep: Dep, vmCount: 0}
get default : ƒ reactiveGetter()
set default : ƒ reactiveSetter(newVal)
__proto__ : Object
Run Code Online (Sandbox Code Playgroud)
默认值是正确的数组.但是,当我尝试将吸气剂更改为
getClientById: state => (id: string) => { return state.clients.default.filter(x => true)[0]; },
Run Code Online (Sandbox Code Playgroud)
它返回一个错误
[ts]'Client []'类型中不存在属性'default'.
那么,有谁知道是什么导致了这个错误?和任何解决方案?
小智 0
尝试改变这个结构
import { GetterTree, Getter } from 'vuex'
import { State } from './index'
const cartProducts: Getter<State, any> = (state: State) => {
return state.cart.added.map(shape => {
// ...
})
}
const getterTree: GetterTree<State, any> = {
cartProducts
}
export default getterTree
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
791 次 |
| 最近记录: |