我正在与Typescript
和React
一起学习MobX
。
我的MobX
商店喜欢自爆。
store: {
child: {
selected: true,
value: 123
}
}
我的组件是
@inject('store')
@observer
class Display extends React.Component<{store: Object}, {}> {
...
render(){
console.log(this.props.store.child.selected); // true
}
}
我可以看到此警报。
[ts]类型“ Object”上不存在属性“ child”。 [2339]
答案 0 :(得分:2)
您可以使用接口来声明商店的形状:
interface Child {
selected: boolean;
value: number;
}
interface Store {
child: Child;
}
@inject('store')
@observer
class Display extends React.Component<{ store: Store }, {}> {
...
render() {
console.log(this.props.store.child.selected); // true
}
}
答案 1 :(得分:2)
您得到的错误是因为您将商店道具定义为通用Object
,没有属性child
。
要使其正常工作,只需为商店定义一个接口,如下所示:
interface Store {
store: {
child: {
selected: boolean;
value: number;
}
}
}
然后将其用作组件中道具的定义,例如:
class Display extends React.Component<Store, {}> {