2016-02-14 92 views
0

因此,我有一个Firebase设置,我试图从snapshot.val()中将我的数据放入this.props.device,但是' this'在'this.firebaseRef.on()函数内部是'null'。有任何想法吗?我如何从Firebase获取数据并将其放入this.props - React

var RegisteredDevice = React.createClass({ 
    mixins: [ReactFireMixin], 

    componentWillMount: function() { 
     this.firebaseRef = new Firebase("https://omniwolfdsn.firebaseio.com/Devices"); 

     this.firebaseRef.on('value', function(snapshot) { 
     this.props.device = snapshot.val(); 
     }); 
    }, 

    propTypes: { 

     name: React.PropTypes.string.isRequired, 
     device: React.PropTypes.string, 
     fire: React.PropTypes.string, 
     noise: React.PropTypes.string, 
     motion: React.PropTypes.string, 
    } 
)}; 

回答

0

您可以通过this作为第四个参数

this.firebaseRef.on('value', function(snapshot) { 

    this.props.device = snapshot.val(); 

    }, (error) => console.log(error), this); 

按照文档的一次签名是

on(eventType, successCallback, [failureCallback], [context]) 

所以第四个参数可以this

+0

@AndrewSteinheiser这个可以是第四个参数。 –

+0

我没有收到错误,但是,当我将它记录到函数之外时,this.props.device未定义。 – AndrewSteinheiser

+0

@AndrewSteinheiser是你使用'getDefaultProps'吗? –

相关问题