componentDidMount内部的setState [重复]

问题描述 投票:0回答:1
我正在尝试等待componentDidMount中的数据,然后将我的状态isLoading更改为false,但是setState没有触发。我可以console.log branch.init中的数据,但是我不知道为什么setState无法正常工作。

state = { isLoading: true, } componentDidMount() { console.log("componentDidMount"); let branchKeyTest = 'key_test_aBcDeF' branch.init(branchKeyTest, function(err, data) { console.log(JSON.stringify(data, null, 1)) this.setState({ isLoading: false }) if (data && data.data_parsed) { switch (data.data_parsed.link_type) { case 'new_release': localStorage.setItem('redirect', JSON.stringify({ 'link_type': 'new_release', 'release_id': data.data_parsed.release_id })); break; default: console.log("do nothing") } } }) } render() { const { isLoading } = this.state; if (!isLoading) { return ( <div>Done Loading</div> ) else { return ( <div>Still Loading</div> ) } }

javascript reactjs branch.io
1个回答
1
投票
branch.init(branchKeyTest, function(err, data) {需要更改为branch.init(branchKeyTest, (err, data) => {,因为您无权访问匿名函数中类的this关键字。

您编写它的方式,您无权访问this,因为this指的是函数的上下文-而不是类。通过将其更改为粗箭头语法,您可以访问this作为React类的上下文。

您可以阅读有关this here的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.