2016-02-17 110 views
0

想知道为什么我没有访问我应该访问的变量真的很难。反应原生传递的道具

我有一个构造

constructor(props) { 
     super(props); 
     this.state = { 
     endpoint:props.url 
     }; 
     console.log(props.url);// Prints url as intended 
     console.log(this.state.endpoint);// Also prints as intended 

}

现在,你会认为这只会延续到componentDidMount,但它不?我认为一个构造函数应该启动一些状态?

componentDidMount(){ 
    fetch(this.state.endpoint).then(etc....) 
    // this fails. If I do console.log(this.state.endpoint) I get undefined. 
} 

如何让端点在获取函数中工作?

回答

1

我实在看不出有任何理由你的代码不应该工作,但是试试这个...

class MyComponent extends React.Component { 
    constructor(props){ 
    super(props) 
    } 

    componentDidMount(){ 
    fetch(this.props.url) 
     .then(response => console.log(response)) 
    } 

} 
+0

那么,工作。不知道为什么它应该是这样的......没有任何意义。但是,好吧。 – KyleK

+0

在构造函数之外,您需要使用'this.props'来访问'props'。我怀疑这是问题。乐意效劳 –

0

状态只应在挂载的组件或插入到dom中的组件中设置。如果您在视图中未使用状态,则无法保证何时会正确更新。你为什么把它设置为状态?只需创建一个变量。

编辑:或者为什么不直接在componentdidmount中使用this.props.url?

+0

我居然使出使用状态,因为我都尝试你的建议了。而且想象一下,实际上我必须设置组件的状态。但是,是啊.....我做的第一个只是尝试this.endpoint,仍然没有工作 – KyleK

相关问题