2017-07-25 108 views
2

我有一个关于与流程嵌套状态对象问题使用嵌套的对象与流...的状态作出反应

所以我们可以说我想要一个对象内部的状态在我的阵营分量的条件参数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 我是不是做错了什么或者我可以做到这一点的另一种方式?

回答

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 
); 

注:流量不会允许你使用

const house = Object.assign({}, 
    {open: 0}, 
    props.door && {close: 0} 
); 

因为props.door && {close: 0}成为布尔值,并且Flow不支持该值