javascript - React.js 调用组件到 setState
问题描述
我正在尝试制作烤面包机组件。
https://codesandbox.io/s/62n81oy4pr
在 index.js 中,this.setState({ toasterText: "Room added to summary." });
从此代码中,您可以随意更改烤面包机的值,当您多次单击按钮时,烤面包机会一直显示,然后在最后一次单击后 2.6 秒后消失。但是,当我将一个组件(甚至是一个 div)设置为“toasterText”并单击按钮时,
像这样的东西,
this.setState({ toasterText: <Component>asdfasdf</Component> });
烤面包机一键出现,再次单击按钮消失。
我想我可以用 componentDidUpdate 做点什么,或者我只是不允许在 setState 中设置组件?
对不起,我的英语不好。
解决方案
它“消失”的原因是因为组件被重新安装(销毁并重新创建),而不是在您的第一个示例中重新渲染(文本更新)。
虽然在技术上可以做到这一点,但出于多种原因(您遇到的问题是其中之一),它被认为是反模式。我想不出任何你想要采取这种方法的理由。只需坚持更新文本。
如果您确实必须实现第二种方法,请尝试向key
组件添加一个道具。这应该可以防止重新安装行为。
推荐阅读
- r - 使用cowplot 拼凑图时颜色渐变不正确
- r - 分组并计算从 t-1 年到 t 年的文本数据的余弦相似度?
- bash - SHELL - IF 语句中的 AND 操作
- python - 气流网络服务器已启动,但 UI 未在浏览器中显示
- c# - TimeZoneInfo.ConvertTimeFromUtc 未在已部署的 Azure Webjob 上正确应用 DST
- node.js - 在heroku上运行应用程序时出现R10启动超时错误
- mysql - MySQL 查询 - 获取当前时间段内下过 FIRST 订单的用户数
- javascript - 为什么 Set 在 JavaScript 中被视为键控集合?
- django - 在 django 中使用相同的视图创建表单和更新
- ruby-on-rails - 没有路线匹配,所以我无法在我的显示页面上显示我的评论