Since React is only interested in the V (view) of MVC, it plays well with other toolkits and frameworks. This includes AngularJS and D3.

A app with React and D3.js:

/** @jsx React.DOM */

var App = React.createClass({
getInitialState: function () {
return {
data: [
{val: 5},
{val: 4},
{val: 7},
{val: 6},
{val: 8},
{val: 1}
]
}
},
componentWillMount: function () { setTimeout(function () {
this.renderChart(this.state.data);
}.bind(this), 100) },
renderChart: function (dataset) { d3.select("body")
.selectAll('div')
.data(dataset)
.enter()
.append('div')
.attr('class', 'bar')
.style('height', function (d) {
console.log(d.val * 5 + 'px');
return d.val * 5 + 'px';
});
},
render: function () {
return (
<div id="chart"></div>
)
}
}); React.render(<App />, document.getElementById('panel'));
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>React + D3 + AngularJS</title>
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="style.css">
</head>
<body id="panel"> <script src="bower_components/react/react.min.js"></script>
<script src="bower_components/react/JSXTransformer.js"></script>
<script src="bower_components/d3/d3.min.js"></script>
<script type="text/jsx" src="jsx/app.js"></script>
</body>
</html>

Integrating with Angular:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>React + D3 + AngularJS</title>
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="style.css">
</head>
<body ng-app="app">
<div ng-controller="RenderChartController as chartCtrl">
<h1>chart 1</h1>
<renderchart data="chartCtrl.data" id="rchart"></renderchart>
<h1>chart 2</h1>
<renderchart data="chartCtrl.data2" id="rchart2"></renderchart>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js"></script>
<script src="bower_components/d3/d3.min.js"></script>
<script src="bower_components/angular/angular.min.js"></script>
<script src="js/app.js"></script>
<script src="js/angular-app.js"></script>
</body>
</html>
/**
* Created by Answer1215 on 9/2/2015.
*/
///////////////
// controller
////////////// function RenderChartController($http){ var vm = this; $http.jsonp('http://filltext.com/?rows=010&val={randomNumber}&callback=JSON_CALLBACK')
.success(function (data) {
vm.data = data;
}); $http.jsonp('http://filltext.com/?rows=010&val={randomNumber}&callback=JSON_CALLBACK')
.success(function (data) {
vm.data2 = data;
});
} //////////////
// directive
//////////////
function renderchart(){
return {
restrict: 'E',
scope: {
data: '=',
id: '@'
},
link: function (scope, element, attrs) {
scope.$watch('data', function (newVal, oldVal) {
React.renderComponent(
App({data: scope.data, target: scope.id}),
element[0]
)
})
}
}
} angular.module('app', []) .controller('RenderChartController',RenderChartController)
.directive('renderchart', renderchart);
/** @jsx React.DOM */

var App = React.createClass({displayName: "App",
defaultProps: function () {
return {
data: {},
id: ''
}
},
componentWillReceiveProps: function (nextProp) {
if(nextProp.data){
this.renderChart(nextProp.data)
}
},
renderChart: function (dataset) {
d3.select("#" + this.props.target)
.selectAll('div')
.data(dataset)
.enter()
.append('div')
.attr('class', 'bar')
.style('height', function (d) {
return d.val * 5 + 'px';
});
},
render: function () {
return (
React.createElement("div", {id: this.props.target})
)
}
});

最新文章

  1. Apache Spark 1.6 Hadoop 2.6 Mac下单机安装配置
  2. uva147 Dollars ——完全背包
  3. 转:Transform Web.Config when Deploying a Web Application Project
  4. 使用ContentProvider管理联系人------搜索联系人
  5. 织梦DedeCMS列表摘要 description 长度控制方法
  6. mongo客户端mongo VUE增删改查
  7. JS禁止横竖屏切换,强制横竖屏显示
  8. liunx操作数据库
  9. 教你成为全栈工程师(Full Stack Developer) 〇-什么是全栈工程师
  10. 计算机网络课程优秀备考PPT之第五章网络层(五)
  11. Highcharts tooltip显示多条线的信息
  12. JAVA日志的前世今生
  13. discuz 修改亮剑积分商城2.91模板(在常用设置中添加商场首页排序方式的背景颜色)
  14. CentOS 7 搭建Squid代理服务器
  15. 在阿里云Ubuntu 14.04 Linux服务器上安装docker
  16. Ubuntu 卸载重装 IntelliJ Idea Community
  17. 关于AutoMApping 实体映射
  18. iOS runtime执行时具体解释
  19. Jmeter接口测试(五)变量及参数化
  20. Collapsing Margin:外边距叠加

热门文章

  1. 通过try、except和else的使用来使Python程序更加“强壮”
  2. Mac下修改Mysql密码
  3. SQL Server与Oracle中的隔离级别
  4. webStorm中的混乱代码格式化
  5. Java实现http服务器(一)
  6. 控制台console
  7. Delphi 在任务栏隐藏程序图标
  8. explain简介
  9. C++ Prime:指针
  10. CSS3 :nth-of-type() 选择器