2017-07-27 76 views
2

所以這是一個有趣的。這是代碼片段。這是一個純粹的功能組件,我傳遞一個對象,我們將通過道具調用someData。反應道具收到的組件,但沒有更新JSX

BASICINFO BEFORE RETURN在首次使用默認的someData對象呈現組件時記錄。 'BASICINFO AFTER RETURN然後再次使用默認的someData對象進行記錄。當父組件的狀態更新時,BASICINFO BEFORE RETURN日誌顯示更新的數據,但我沒有得到日誌BASICINFO AFTER RETURN顯示更新後的道具,如我所料。就好像它不知道道具更新。有誰知道是什麼原因造成的?

export function MyComponent({someData}: MyComponentProps) { 
    console.log('BASICINFO BEFORE RETURN', someData.basicInfo); 
    return (
    <Flex> 
     {console.log('BASICINFO AFTER RETURN', someData.basicInfo)} 
     <Box> 
     <p> 
      {someData.basicInfo.personalSummary} 
     </p> 
     </Box> 
) 
} 

回答

0

是的,事實證明我是變異的狀態。我正在處理嵌套幾層的對象。結束了扁平狀態,並保存我真正需要的東西。應該首先做到這一點。

0

有沒有可能是因爲沒有顯示的數據實際上不同而導致組件不再顯示?即:如果basicInfo.personalSummary發生變化,組件是否重新渲染?

如果顯示的數據正在改變並且沒有重新渲染,您確定該狀態沒有被突變嗎?