我有一个关于带流程的嵌套状态对象的问题......
所以假设我想在我的React组件中的状态中的对象内部使用条件参数close
。
class Appearance extends React.Component {
state: {
house: {
open: number,
close?:number,
},
};
constructor(props) {
super(props);
const house = {
open: 0,
};
if (props.door) {
house.close = 0;
}
this.state = {
house,
};
}
这似乎给我一个错误close. Property not found in object literal
我做错了什么或者我可以用另一种方式做到这一点吗?
答案 0 :(得分:2)
您正在使用const house = { open: 0 };
从流程文档中检查Sealed object types。
尝试
let house = { };
house.open = 0;
if ( props.door ) {
house.close = 0;
}
或...您可以使用Object.assign
并将其保存为密封对象
const house = Object.assign({},
{open: 0},
props.door ? {close: 0} : null
);
注意:Flow不允许您使用
const house = Object.assign({},
{open: 0},
props.door && {close: 0}
);
因为props.door && {close: 0}
成为布尔值而Flow不支持