Javascript 导航回叫反应本机
我有两个屏幕。家庭和光电探测器。在家里我有照片清单。如果我喜欢PhotoDetals屏幕上的照片,我想更新主屏幕上的喜欢。不更新整个页面。我可以在屏幕之间使用回调吗?怎样?我用的是StackNavigator。 谢谢你的回答Javascript 导航回叫反应本机,javascript,react-native,ecmascript-5,Javascript,React Native,Ecmascript 5,我有两个屏幕。家庭和光电探测器。在家里我有照片清单。如果我喜欢PhotoDetals屏幕上的照片,我想更新主屏幕上的喜欢。不更新整个页面。我可以在屏幕之间使用回调吗?怎样?我用的是StackNavigator。 谢谢你的回答 导航('PhotoDetails'{ id:rowData.caption.id, 标记:rowData.caption.text, url:rowData.images.standard_resolution.url, 喜欢:this.state.likes[rowDa
导航('PhotoDetails'{
id:rowData.caption.id,
标记:rowData.caption.text,
url:rowData.images.standard_resolution.url,
喜欢:this.state.likes[rowData.caption.id]| 0
})}>
在您的情况下,您应该将回调函数从主屏幕传递到子屏幕,子屏幕将更新该值。例如:
class HomeScreen extends Component {
state = { likes: 0 }
callback(likes) {
this.setState({ likes: likes })
}
render() {
const navigation = this.props.navigation;
return (
<View>
<Text onPress={navigation.navigate('SomeChildScreen', { callback: this.callback.bind(this), likes: this.state.likes })}>Go to Child Screen</Text>
</View>
)
}
}
class SomeChildScreen extends Component {
liked() {
const navigation = this.props.navigation;
let likes = navigation.getParam('likes');
likes++;
navigation.getParam('callback')(likes);
navigation.navigate('HomeScreen');
}
render() {
const navigation = this.props.navigation;
return (
<View>
<Text onPress={this.liked}>Like</Text>
</View>
)
}
}
类主屏幕扩展组件{
状态={likes:0}
回调(喜欢){
this.setState({likes:likes})
}
render(){
常量导航=this.props.navigation;
返回(
转到子屏幕
)
}
}
类SomeChildScreen扩展组件{
喜欢{
常量导航=this.props.navigation;
让likes=navigation.getParam('likes');
喜欢++;
getParam('callback')(likes);
导航。导航(“主屏幕”);
}
render(){
常量导航=this.props.navigation;
返回(
喜欢
)
}
}
并说明我们必须如何传递回调函数:this.callback.bind(this)