- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个使用 toastr 组件的应用程序。但是,当我尝试在此组件中分派(dispatch) redux 操作时,我收到以下控制台消息:
Warning: Cannot update during an existing state transition (such as within
render
or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved tocomponentWillMount
.
您可以在 this codesandbox 中看到这样的示例。特别是,问题出在第 23 行的 toastr.js 组件上。谢谢!
最佳答案
问题正是错误消息所说的:您直接在 render()
方法内部触发一种 React 状态更新:
const Toasts = ({ appointments, resetState, toastedAppointment, toasts }) => {
if (toasts.type) {
switch (toasts.type) {
case "dataFetched":
resetState(); // Dispatching this action creates the warning.
在本例中,它正在调度 Redux 操作,但这最终会导致 React setState()
调用。
不要这样做:) 副作用逻辑,例如根据当前状态触发某种附加更新,可能应该发生在 componentDidUpdate
之类的情况下。 Toasts
组件可能需要相应地从函数组件转换为类组件。
关于javascript - react 错误: "Cannot update during an existing state transition",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54222194/
我是一名优秀的程序员,十分优秀!