如何在反应还原剂中使用d3.nest?

时间:2016-09-13 17:36:21

标签: reactjs d3.js

我有以下减速机:

const initialState = {data1:null, data2:null, isFetching: false,error:null};
export const gaData = (state = initialState, action)=>{
    switch (action.type) {    
        case 'FETCH_DATA_SUCCESS':
        return Object.assign(
            {},state, 
        {data1: action.data1, 
         data2: action.data2.map( ([x, y, z]) => ({ x, y, z }) ), 
         isFetching: action.isFetching,
         error: null });
        default:return state;
    }
};

如何使用d3.nest,以便为x嵌套y值和汇总data2值?

如果我是对的,我会做这样的事情:

var newdata = d3.nest()
    .key(function(d) { return d.x; })
    .rollup(function(d) { return d3.sum(d, function(g) {return g.y;}); }) 
    .entries(data2);

但我不知道在减速机中包含它。

1 个答案:

答案 0 :(得分:1)

听起来好像你只想做这样的事情:

    case 'FETCH_DATA_SUCCESS':
        let data2 = action.data2.map(([x, y, z]) => ({ x, y, z }));
        data2 = d3.nest()
            .key(function (d) { return d.x; })
            .rollup(function (d) { return d3.sum(d, function (g) { return g.y; }); })
            .entries(data2);

然后您可以将data2作为新状态对象的一部分返回。

另外,请考虑将变量名称更改为比data2更有意义的内容!