我正在使用React和d3,并尝试找出如何在比例尺更改时正确触发渲染。然而,可靠地检测比例尺是否已更改相当困难。
理论上,我可以想到两种解决方法。一种是每次渲染时重新生成比例尺,然后有一种可靠的方式来确定两个比例尺是否相同(例如比较它们的域、范围等)。但仍然存在一些问题,例如,我不知道如何区分具有相同域和范围的线性比例尺和对数比例尺。(如果我尝试一个测试值-例如域的中点-如果给定非数字比例尺,它将崩溃。我可以通过“反向鸭式类型转换”所有的d3各种比例尺来避免这种情况,但这似乎非常繁琐,如果测试函数变得太复杂,则可能成为性能陷阱。)
另一种解决方案是在渲染过程中保持一致的比例尺对象,但从某种程度上让该比例尺在其任何属性更改时触发渲染。我认为这最终将导致与第一种选项相同的结果,但也许d3中有一些我不知道的技巧,使其更容易?
理论上,我可以想到两种解决方法。一种是每次渲染时重新生成比例尺,然后有一种可靠的方式来确定两个比例尺是否相同(例如比较它们的域、范围等)。但仍然存在一些问题,例如,我不知道如何区分具有相同域和范围的线性比例尺和对数比例尺。(如果我尝试一个测试值-例如域的中点-如果给定非数字比例尺,它将崩溃。我可以通过“反向鸭式类型转换”所有的d3各种比例尺来避免这种情况,但这似乎非常繁琐,如果测试函数变得太复杂,则可能成为性能陷阱。)
另一种解决方案是在渲染过程中保持一致的比例尺对象,但从某种程度上让该比例尺在其任何属性更改时触发渲染。我认为这最终将导致与第一种选项相同的结果,但也许d3中有一些我不知道的技巧,使其更容易?
var isLinear = true;
并且每当您更改比例尺时修改它。 - mtx