我已经成功将道具传递到另一个屏幕,但是如何在第二个屏幕上全局使用道具?
我需要能够在所有函数中使用从屏幕 1 传递的道具render()
,因为我正在使用道具中的数据进行 fetch 调用,并使用与render()
调用相同的道具数据。
例如,我需要这样做:
constructor(props) {
super(props);
this.state = {
data: [],
rowData: this.props,
}
}
getData() {
this.setState({
rowData: this.props
});
return fetch('https://mywebsite.com/'+this.state.rowData.something+'/myotherdata')
.then((response) => response.json())
.then((responseJson) => {
this.setState({
data: responseJson.data
});
})
.catch((error) => {
console.error(error);
});
}
componentDidMount() {
this.getData();
}
render() {
return (
<ScrollView>
<Image styleName="large-banner" source={{ uri: rowData.image &&
rowData.image ? rowData.image : undefined }}>
<Tile>
<Title>{rowData.name}</Title>
<Subtitle>{rowData.createdAt.datetime}</Subtitle>
</Tile>
</Image>
<Row>
<Text>Company: {rowData.company}</Text>
</Row>
<Divider styleName="line" />
<Row>
<Icon name="laptop" />
<View styleName="vertical">
<Subtitle>Visit webpage</Subtitle>
<Text>{rowData.url}</Text>
</View>
<Icon name="right-arrow" />
</Row>
<Divider styleName="line" />
<View style={{paddingTop: 20}}>
<Progress.Bar progress={this.state.data.progress * .1} width={200} />
</View>
<Divider styleName="line" />
</ScrollView>
);
}
显然,我没有做正确的事情,但我无法弄清楚。我究竟做错了什么?
这个问题更多地解释了我的屏幕和fetch
电话。
编辑:我根据下面的答案进行了更改并更新了我的代码。屏幕加载,然后出现此错误:
undefined 不是对象(评估 'this.state.data.progress)
对于这一行:
<Progress.Bar progress={this.state.data.progress * .1} width={200} />