2017-07-25 139 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不支持該值