我正在使用React Native 0.43。我有一个名为ApiComponent
的组件。在此组件的componentWillMount
方法中,我从API中获取了一些结果,我想在render
方法中获得此结果。我在我的组件中使用以下代码(删节版本):
export default class ApiComponent extends Component {
constructor(props) {
super(props);
this.state = {
statement: {},
};
}
componentWillMount() {
fetch('http://example.com/api_url/')
.then(response => response.json())
.then(data => this.setState({ statement: data }))
.catch(error => console.error(error));
}
render() {
return (
<Text>{'Rendering API: ' + console.log(this.state.statement)}</Text>
);
}
}
现在,当我运行此代码时,我在控制台Rendering API: {}
中得到一个空结果。根据我的理解,render
方法在从API返回结果之前执行,因此状态不会随结果一起更新。
我的问题是,如何确保render
方法仅在componentWillMount
中的代码完成执行时执行?
答案 0 :(得分:1)
您可以使用三元操作来确保文本仅在this.state.statement
为真时呈现
return (
{ this.state.statement ? <Text>{'Rendering API: ' + console.log(this.state.statement)}</Text> : null }
)