javascript - 为什么 onClick 中只有一个函数执行?

标签 javascript node.js reactjs

当单击导航栏上的选项卡时,我尝试调用两个方法。我最初只调用了一种方法,直到我意识到我需要调用第二个方法来更新我的数据。问题是,当我尝试调用这两种方法时,只会执行其中一个方法,而不会同时执行两者。我之前在 onClick 方法中有多个函数,它们工作得很好,但我有点困惑为什么这种方式不起作用。任何帮助都会很棒,谢谢!

app.js


export default Class App extends React.Component{
 constructor(props){
  this.state = {
   OpenJobsDB: [],
   PendingJobsDB: [],
   CompletedJobsDB: [],
   page: undefined,
  };

  this.setPage = this.setPage.bind(this);
  this.PullJobsTables = this.PullJobsTables.bind(this);
 }
}
    PullJobsTables() {
        console.log("pulling jobs from DB");

        socket.emit('selectFromJobsWhereOpenAwaitingETAsAssigned', function (result) {
            this.setState({ OpenJobsDB: result });
        }.bind(this));

        socket.emit('selectFromJobsWherePending', function (result) {
            this.setState({ PendingJobsDB: result });
        }.bind(this));

        socket.emit('selectFromJobsWhereCompleteDeleted', function (result) {
            this.setState({ CompletedJobsDB: result });
        }.bind(this));
    }

    setPage(e) {
        console.log("inside setpage");
        var naviBtns = document.getElementsByClassName('NavigationBarButtons');
        for (var i = 0; i < naviBtns.length; i++) {
            naviBtns[i].style.backgroundColor = '#333a56';
            naviBtns[i].style.bottomBorder = '0';
        }
        e.target.style.backgroundColor = '#e14658';
        e.target.style.bottomBorder = '3px solid #FFA279';

        const page = e.target.name;
        this.setState(() => ({ page }))
        this.OpenNavigationBar('close');
        this.setState({
            showReportsList: false,
            showTablesList: false,
            showTimeOff: false,
        });
    }
}

我的 onClick 看起来像这样


<button onClick{() => {this.setPage.bind(this); this.PullJobsTables.bind(this);}}

在此示例中,唯一调用的是 PullJobsTables 方法,而不是 setPage 方法。这是我在类似情况下完成的方法,效果很好。这让我有点困惑,为什么它不同时调用两者。

最佳答案

这两个函数已经在构造函数中绑定(bind)了 this 。您还需要将事件传递给期望它的回调。

<button
  onClick={event => {
    this.setPage(event);
    this.PullJobsTables();
  }}
>

关于javascript - 为什么 onClick 中只有一个函数执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068519/

相关文章:

reactjs - 我无法在 typescript 中使用动态键名设置状态

javascript - React ES6 父子组件状态问题

javascript - 如何使用单个 HTML 按钮切换 React 小部件的可见性

javascript - 在对象内部使用 for-in 循环来访问其成员

javascript - 如何保护 Next.js 中的 API 路由?

javascript - Express 端点对于 POST 返回 404,对于 GET 返回 200

javascript - node-schedule 每个月的第一个星期一运行

javascript - 如何将值传递给 Node 中的数组

javascript - jQuery 的神秘情况还是我瞎了眼?

javascript - 如何使用 Drupal 创建输入数据?