javascript - React.js 调用组件进入setState

标签 javascript reactjs

我正在尝试制作 toastr 组件。

https://codesandbox.io/s/62n81oy4pr

在 index.js 中,this.setState({ toasterText: "Room added to summary." });

从这段代码中,您可以根据需要更改 toastr 的值,当您多次单击该按钮时, toastr 会一直显示,然后在最后一次单击后 2.6 秒后消失。 但是,当我将组件(甚至是 div)设置为“toasterText”并单击按钮时,

像这样的, this.setState({ toasterText: <Component>asdfasdf</Component> });

toastr 一键出现,再次点击按钮消失。

我想我可以用 componentDidUpdate 做点什么,或者我只是不允许在 setState 中设置组件??

抱歉我的英语不好。

最佳答案

它“消失”的原因是因为组件被重新安装(销毁并重新创建),而不是在您的第一个示例中重新呈现(文本更新)。

虽然这在技术上是可行的,但出于多种原因(您遇到的问题就是其中之一),它被认为是反模式。我想不出任何你想要采用这种方法的理由;只需坚持更新文本即可。

如果您真的必须实现第二种方法,请尝试向组件添加一个key 属性。这应该可以防止重新安装行为。

关于javascript - React.js 调用组件进入setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52813783/

相关文章:

javascript - 在javascript中使用子类中的静态方法

javascript 在我的客户端和服务器文件夹之间共享代码

javascript - 将 Chartjs 与 reactjs 结合使用

javascript - 如何在 angularjs 中使用 input[type=file] 验证表单

javascript - 从另一个事件 Node js 发出事件

php - 从 YouTube API 标题标签的开头删除前 24 个字符

reactjs - 如何使用Formik在onchange中调用两个函数

javascript - 有没有办法将变量从 Javascript 中的不同模块传递给导出的生成器?

javascript - 带 onClick 的按钮在 React 中只能工作一次

reactjs - 单击按钮时如何使用 useRef Hook 关注 Material UI TextField?