繁体   English   中英

错误:无法读取未定义的属性“ props”,在子级中调用父方法

[英]Error: Cannot read property 'props' of undefined, Calling parent Method in Child

我正在父组件中绘制图表。 当我尝试在子组件中访问this.props.onUpdate()时,出现错误“无法读取未定义的属性'props'”
我必须更新图表数据acc以开始和结束时间。 子组件

var React = require('React');
var ReactDOM = require('ReactDOM');
var Chart = require('react-google-charts').Chart;
var $ = require('jquery');

var LChart = React.createClass({
   getInitialState: function() {
       return {
            rows: [],            
               }
        },
    componentWillMount: function () {
        var _this = this;
            var request = function () {
                this.props.onUpdate();
                $.post("/url" ,{'start':this.props.sTime, 'end':this.props.eTime }, function (result) { 

                    _this.setState({
                        rows: result.data
                    });
                });
               setTimeout(request, 10000);
            };
         request();
        },
    render: function() {
        return (
            <div id="chart_widget" >
                <Chart chartType="LineChart"
                   rows={this.state.rows}
                   columns={this.props.columns}
                   options={this.props.options}
                   width={this.props.width}
                   height={this.props.height} />
            </div>
        );
      }
    });
module.exports = LChart;

父组件:

var React = require('React');
var LChart = require('LChart');

var Parent = React.createClass({    

 getInitialState: function()
  {
      return ({
          columns: [
                {
                    'type': 'datetime',
                    'label' : 'Date'
                },
                {
                    'type' : 'number',
                    'label' : Val
                }
                ],
          options: 
                {
                    hAxis:{format:'HH:mm'},
                },
          date: new Date(),
          eTime: date.getTime(),
          sTime: eTime - (60000 * 5),
      });
  },
  onUpdate: function(val){
      this.setState({
          date: new Date(),
          eTime: date.getTime(),
          sTime: eTime - (60000 * range),
      });
  },
render: function () {
    return (
            <div >
                <LChart width="500px" height="400px" 
                             date={this.state.date} 
                             sTime={this.state.sTime} 
                             eTime={this.state.eTime}
                             columns={this.state.columns}
                             options={this.state.options}
                             onUpdate={this.onUpdate}/>
            </div>  
        );
    }
}); 
module.exports = Parent;

您应该将request绑定到LChart组件。

var LChart = React.createClass({
   getInitialState: function() {
       return {
            rows: [],            
               }
        },
    componentWillMount: function () {
        var _this = this;
            var request = function () {
                this.props.onUpdate();
                $.post("/url" ,{'start':this.props.sTime, 'end':this.props.eTime }, function (result) { 

                    _this.setState({
                        rows: result.data
                    });
                });
               setTimeout(request, 10000);
            };
         request = request.bind(this);
         request();
        },
    render: function() {
        return (
            <div id="chart_widget" >
                <Chart chartType="LineChart"
                   rows={this.state.rows}
                   columns={this.props.columns}
                   options={this.props.options}
                   width={this.props.width}
                   height={this.props.height} />
            </div>
        );
      }
});

此外,在父组件中,在setState调用之外声明new Date

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM