ReactJS如果this.props.myVar ==''某事'不工作

时间:2017-02-10 11:06:46

标签: javascript reactjs object

我有以下内容:

var chartOptions = {
        scales: {
            yAxes: [{
                ticks: {
                    callback: (v) => {
                        if (v < 3600000) {
                            return this.callFormat(v)
                        }
                    },
                    stepSize: (this.props.mode == 'calls' ? 7200 : 1000)
                }
            }]
        }
    };

但是当this.props.mode &#39;调用&#39;时,它总是从我的对象中返回false,因此总是会产生1000。

我尝试过这样做的几种不同的方式就好像是this.props当变量应该是它时完全被忽略了。

任何人都知道为什么会这样?

if (this.props.mode == 'calls') {
        var stepSize = 7200
    }
    var chartOptions = {
        scales: {
            yAxes: [{
                ticks: {
                    callback: (v) => {
                        if (v < 3600000) {
                            return this.callFormat(v)
                        }
                    },
                    stepSize
                }
            }]
        }
    };

也行不通。

...
<div className="col-xs-6">
    {!this.state.chart_loading ? <Chart data={this.state.chart_data}
    mode={this.state.stat_view}/> : null}
</div>
...

chart.js之

import React, {Component, PropTypes} from 'react';
import {Line as LineChart} from 'react-chartjs-2';
import Numeral from 'numeral';

export default class Chart extends Component {

    constructor(props, context) {
        super(props);
    }

    callFormat(seconds) {
        var time = Numeral(seconds).format('00:00:00');
        var bits = time.split(':');
        var str = '';
        if (bits[0] > 0) {
            str += bits[0] + 'h';
        }
        if (bits[1] > 0) {
            if (bits[1] < 10 && bits[0] == 0) {
                str = bits[1].substr(1, 1) + 'm';
            } else {
                str += ' ' + bits[1] + 'm';
            }
        }
        if (bits[0] == 0 && bits[1] == 0) {
            str = 0;
        }
        return str;
    }

    render() {
        if (this.props.mode == 'calls') {
            var stepSize = 7200
        }
        var chartOptions = {
            scales: {
                yAxes: [{
                    ticks: {
                        callback: (v) => {
                            if (v < 3600000) {
                                return this.callFormat(v)
                            }
                        },
                        stepSize
                    }
                }]
            }
        };



        return (
            <LineChart data={this.props.data} options={chartOptions} width={950} height={250}/>
        );
    }
}

0 个答案:

没有答案