Box.expandBox(id);
var Box= (function(){
return {
expandBox: function(id) {
console.log('inside expandBox: ' + id);
ReactDOM.render( React.createElement(this.pBox(id)), document.getElementById('activate'))
},
pBox: function(id) {
console.log('inside pBox: '+ id);
return React.createClass({
getInitialState: function(id) {
console.log('inside getInitialState: '+ id);
return {
person_id: id
}
},
........
尝试将状态person_id
分配给外部传递的id
。我在pBox
内输出数据,但React的子函数中的数据丢失了。我已经尝试过var self = this
任务,但无济于事。当涉及到JS时,我迷失了范围。
答案 0 :(得分:1)
目前,id
被getInitialState(id)
的参数遮蔽并变为undefined
,因为调用getInitialState
时没有任何参数。
因此,删除参数,您可以使用id
中pBox
方法中提供的getInitialState()
。
pBox: function(id) {
console.log('inside pBox: '+ id);
return React.createClass({
getInitialState: function() {
console.log('inside getInitialState: '+ id);
return {
person_id: id
}
},
答案 1 :(得分:0)
函数getInitialState
期待id
的参数。如果没有收到,则该局部范围内仍有id
但它包含undefined
。正如@Shuhei所提到的,从函数中删除该参数或给它一个不同的名称将允许您访问更高范围的id
。
为了便于阅读,我建议您将React.CreateClass分成另一个函数。
你的新功能看起来像这样:
function foo(id){
console.log('inside pBox: '+ id);
return React.CreateClass({...}) //Same code you had before
}
你的代码看起来像这样:
Box.expandBox(id);
var Box= (function(){
return {
expandBox: function(id) {
console.log('inside expandBox: ' + id);
ReactDOM.render( React.createElement(this.pBox(id)), document.getElementById('activate'))
},
pBox: foo
....