反模式:在render()方法

时间:2017-04-06 13:48:43

标签: reactjs react-redux recharts

我正在重写Recharts的工具提示功能,以便在页面的其他位置(另一个组件中)提供悬停数据。

<Tooltip content={ this.showTooltipData.bind(this) } />

showToolTipData触发一个动作创建器,它修改了当前渲染方法敏感的状态树的一部分,但我仍然得到了可怕的反模式警告:

Warning: setState(...): 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 to `componentWillMount`.

此警告正确且不正确,因为呈现组件不受状态更改的影响。我关心这个问题的唯一原因是警告可能会使控制台发出垃圾邮件(有1000个点中有10个要悬停在上面)。

有更好的方法吗?我已经考虑过使用目标悬停数据组件的“私有”状态(与现在使用的redux状态相反),但我也需要其他地方的数据。将功能移至 componentWillMount()是不可能的。

有人发现了一种更安全的覆盖ToolTip功能的方法吗?

1 个答案:

答案 0 :(得分:0)

Freakin'蟋蟀。一旦我得到时间,我会把它带到还原......