2017-07-27 44 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发生变化,组件是否重新渲染?

如果显示的数据正在改变并且没有重新渲染,您确定该状态没有被突变吗?