【问题标题】:React child is not updating after after parent state changed父状态更改后反应子不更新
【发布时间】:2021-03-31 16:09:03
【问题描述】:

我已经设法根据内容高度动态添加 React 元素 Add React elements dynamically depending on the content height

我已经准备了一个代码框来显示这个:

https://codesandbox.io/s/html-react-parser-forked-8pl3b

但是,我知道的问题是,显示实际文章的子组件没有对其父组件的状态更新做出反应。这可以通过单击Article 2 按钮进行测试。

是否与引用的使用有关?我不知道发生了什么。

【问题讨论】:

  • 这是因为你没有考虑到 html 属性的变化。 You could do something like this.
  • 感谢您的回答@tholle,但是通过该示例,您摆脱了我之前的效果,实现了我想要的功能。
  • 是的,我并不是说您应该完全替换它,我只是指出缺少的内容。

标签: javascript reactjs react-hooks


【解决方案1】:

这是因为Article 组件有自己的状态。你传入const [article, setArticle] = React.useState(parse(html));html 属性是初始值,当属性改变时会被忽略。

您可以使用 useEffect 挂钩在道具更改时更新状态。您还需要重置didInsertAds 状态:

React.useEffect(() => {
  setArticle(parse(html));
  setDidInsertAds(false);
}, [html]);

【讨论】:

  • 我试过了,但如果我保持以前的效果,它就会被忽略。如果我删除添加广告的效果,它会起作用。
  • 这是因为didInsertAds 始终为真,您在useEffect 挂钩中检查它。如果你重置它,它工作正常。
猜你喜欢
  • 1970-01-01
  • 2021-07-07
  • 2017-05-05
  • 2016-10-02
  • 2018-07-08
  • 2021-07-17
  • 2021-06-20
  • 2017-09-10
  • 2018-11-03
相关资源
最近更新 更多