代码在 componentDidMount 中执行,但不在其他函数中执行



所以我遇到了一个奇怪的问题,也许我在这里做错了什么,但我以前没有遇到过这个问题,我的应用程序充满了类似的代码。

基本上,我正在尝试在附加到按钮的函数中执行一个简单的 Firestore get()。由于某种原因,代码没有运行,或者如果是,我没有得到任何反馈。如果我将相同的代码放在 componentDidMount 中,它会运行并为我提供数据库快照。

以下是有问题的两段代码。

针对我正在使用的当前绑定进行了更新

    this.usersRef = firebase.firestore().collection('users');
componentDidMount() {
    this.usersRef
        .get()
        .then((snapshot) => {
            console.log('TEST didMount snapshot', snapshot);
        }).catch((error) => {
            console.log(error)
        });
}

    submitSearch() {
        console.log('submitSearch')
        this.usersRef
            .get()
            .then((snapshot) => {
                console.log('TEST submitSearch snapshot', snapshot);
            }).catch((error) => {
                console.log(error)
            });
}

从这里调用提交搜索

            <Button style={{marginTop: 3, marginBottom: 8}} primary onPress={() => this.submitSearch()}>
                {strings.search}
            </Button>

所以我在这里尝试了很多东西,但我似乎无法弄清楚为什么代码在提交搜索函数中不起作用。我从该功能中看到的唯一内容是控制台日志,上面写着提交搜索。

任何想法将不胜感激!谢谢。

问题是函数的绑定方式。

我最初在构造函数中有以下内容: this.submitSearch = this.submitSearch.bind(this)

并在按钮组件中调用它

onPress={this.submitSearch}

我删除了构造函数绑定,并在按钮组件中仅使用了以下内容:

onPress={() => this.submitSearch()}

我以为我已经做到了!但我可以确认这解决了这个问题。奇怪的是,没有警告或错误,似乎在这种情况下,它们会有所帮助,而不仅仅是不运行代码。

相关内容

  • 没有找到相关文章

最新更新