栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否有将d3.js图形集成到Facebook React应用程序中的适当方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否有将d3.js图形集成到Facebook React应用程序中的适当方法?

一种策略可能是构建一个黑匣子组件,您永远不要让React更新。组件生命周期方法

shouldComponentUpdate()
旨在允许组件自行确定是否需要重新渲染。如果您
始终
false
从该方法返回,React将永远不会深入到子元素中(也就是说,除非您调用
forceUpdate()
),所以这将成为抵御React深度更新系统的一种防火墙。

使用第一个调用

render()
生成图表的容器,然后在
componentDidMount()
方法中使用D3绘制图表本身。然后就归结为响应React组件的更新来更新您的图表。尽管您可能不
应该
在中执行类似的操作
shouldComponentUpdate()
,但我看不出没有真正的理由不能继续从那里调用D3更新(请参阅React组件的代码
_performUpdateIfNecessary()
)。

因此您的组件将如下所示:

React.createClass({    render: function() {        return <svg></svg>;    },    componentDidMount: function() {        d3.select(this.getDOMNode()) .call(chart(this.props));    },    shouldComponentUpdate: function(props) {        d3.select(this.getDOMNode()) .call(chart(props));        return false;    }});

请注意,您需要在

componentDidMount()
方法(用于第一个渲染)和方法
shouldComponentUpdate()
(用于后续更新)中调用图表。还要注意,您需要一种将组件属性或状态传递到图表的方法,并且它们是特定于上下文的:在第一个渲染中,已经在
this.props
和上设置了它们
this.state
,但是在以后的更新中,尚未设置新的属性。在组件上,因此您需要使用功能参数。

在这里查看jsfiddle 。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418048.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号