与NVD3组合设置React

时间:2016-01-27 16:20:59

标签: d3.js reactjs nvd3.js

我对React(以及一般的前端工作)相当新。如何设置React以使用NVD3?

目前我正在尝试实现react-nvd3的示例代码,但是d3函数d3.transform()抛出了以下错误:

  

意外值translate(145,NaN)解析转换属性。

     

g.setAttribute(“transform”,string);

我的代码如下:

var TestData = [{
    key: "Cumulative Return",
    values: [
        {
            "label" : "A" ,
            "value" : -29.765957771107
        } ,
        {
            "label" : "B" ,
            "value" : 0
        } ,
        {
            "label" : "C" ,
            "value" : 32.807804682612
        } ,
        {
            "label" : "D" ,
            "value" : 196.45946739256
        } ,
        {
            "label" : "E" ,
            "value" : 0.19434030906893
        } ,
        {
            "label" : "F" ,
            "value" : -98.079782601442
        } ,
        {
            "label" : "G" ,
            "value" : -13.925743130903
        } ,
        {
            "label" : "H" ,
            "value" : -5.1387322875705
        }
    ]
}];

var App = React.createClass({
    render: function() {
        return (
                <NVD3Chart id="chart" type="discreteBarChart" datum={TestData} x="test" y="test"/>
        );
    }
});

ReactDOM.render(
    <App/>,
    document.getElementById('container')
);

请参阅https://jsfiddle.net/x2wuko8g/2/我想它必须对TestData的格式做些什么,但无法弄明白。

非常感谢帮助!

1 个答案:

答案 0 :(得分:3)

我认为问题是你的x和y道具配置错误。

<NVD3Chart id="chart" type="discreteBarChart" datum={TestData} x="test" y="test"/>

您将x设置为test,y设置为test,但这些字段不存在于您的数据中。

尝试以这种方式将x更改为label,将y更改为值:

<NVD3Chart id="chart" type="discreteBarChart" datum={TestData} x="label" y="value"/>

如果传递一个字符串(就像在这种情况下一样),库将在数据的每个项目中查找具有该字符串的键。

我希望这有帮助。