Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导航回叫反应本机_Javascript_React Native_Ecmascript 5 - Fatal编程技术网

Javascript 导航回叫反应本机

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

我有两个屏幕。家庭和光电探测器。在家里我有照片清单。如果我喜欢PhotoDetals屏幕上的照片,我想更新主屏幕上的喜欢。不更新整个页面。我可以在屏幕之间使用回调吗?怎样?我用的是StackNavigator。 谢谢你的回答

导航('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)