javascript - 如何通过两个组件传递我的功能?

标签 javascript reactjs debugging

所以我有一个状态:

toggleWatched:false

以下是 App.js 文件中将传递给 MovieCard 组件的四个函数:

    watchedMovie= () => {
    console.log("WATCHED MOOPIE");
}

notWatchedMovie = () => {
    console.log("HAVENT WATCHED MOOPIE");

}


handleChange= () => {
    this.setState({toggleWatched:!this.state.toggleWatched})
}

Toggling = () => {
    this.state.toggleWatched ? this.watchedMovie : this.notWatchedMovie;
}

在传递给 MovieCard 之前,它必须通过收藏夹组件传递:

                              <Favorites
                                {...props}
                                handleChange={this.handleChange}
                                Toggling={this.Toggling}
                                toggleWatched={this.state.toggleWatched}
                            />

然后在 favorites.js 的渲染中:

 const {
        Toggling,
        handleChange,
        toggleWatched,
    } = this.props;

然后传递给常量组件的电影卡片:

                            <MovieCard
                                handleChange={handleChange}
                                Toggling={Toggling}
                                toggleWatched={toggleWatched}

                            />

在电影卡中,它的用法如下:

const MovieCard = ({ handleChange,Toggling,}) 

我在 MovieCard 中制作了一个按钮来处理它:

               <button style={{fontSize:"14px"}} onClick={handleChange}>
           {
               Toggling
           }
            </button>

当我按下按钮时,没有错误,但也没有任何安慰。我不知道错误是什么。有人可以帮我解决这个问题吗?

最佳答案

我想我知道问题所在。您的函数 Toggling 未被调用。函数本身不会被调用,您只是将 handleChange 传递给 MovieCard 处的按钮 onClick,因此只有函数 handleChange 被调用。而它所做的只是setState 用于toggleWatched

根据你的情况,你的handleChange 函数应该如下所示

handleChange= () => {
  this.setState({toggleWatched:!this.state.toggleWatched}, () => this.Toggling())
}

我们将 this.Toggling() 作为 setState 的第二个参数传递,因为 this.setState 是异步的

关于javascript - 如何通过两个组件传递我的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51182204/

相关文章:

c++ - 如何在 gdb 中的内存位置添加断点

java - 使用 System.out.println 输出后可以更改一行吗?

debugging - 在 WebStorm 中重新调整调试

javascript - 发布历史;等待回应

javascript - 在 Chrome 版本 79.0.3945.88 中,调试器鼠标悬停时变量不显示任何值

android - 在React Native项目运行期间停止下载Gradle

reactjs - 连接 Next.js CSR React 应用程序、Django 和 PostgreSQL 的最佳方式

javascript - 更新部分映射的 ko 模型

javascript - 如何在 Nodeunit 中显示完整的堆栈跟踪?

javascript - 如何在 Android 中播放歌曲 - phonegap