首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按钮中的e.target.value有时返回未定义的内容。为什么会发生这种事?

按钮中的e.target.value有时返回未定义的内容。为什么会发生这种事?
EN

Stack Overflow用户
提问于 2019-02-06 03:15:14
回答 3查看 1.6K关注 0票数 2

我已经定义了四个按钮,这些按钮将在onClick事件中调用相同的方法。

方法

代码语言:javascript
复制
   changeFilterForButtons(e){
    let filter = e.target.value;
    console.log("----------------------------"  + filter);
    this.props.handleData(filter);
    this.props.filterData();
}

呈现()

代码语言:javascript
复制
 render() {
    return (
        <div className='audit-menu' style={{backgroundColor: '#fff'}}>
            <div className='row align-items-center'>
                <div className="col text-left ml-2 font-weight-bold">
                    Invoice audit
                </div>
                <div className="col-6 ">
                    <div class="btn-group btn-group w-100">
                        <button class="w-25 btn menu-btn" value='inbox' onClick={this.changeFilterForButtons.bind(this)}><i className="icon-upload pr-3">
                        </i>Inbox
                        </button>
                        <button class="w-25 btn menu-btn" value='rejected'  onClick={this.changeFilterForButtons.bind(this)}><i className="icon-search pr-3">
                        </i>Rejected
                        </button>
                        <button class="w-25 btn menu-btn" value='accepted' onClick={this.changeFilterForButtons.bind(this)}><i className="icon-search pr-3">
                        </i>Accepted
                        </button>
                        <button class="w-25 btn menu-btn" value='archive' onClick={this.changeFilterForButtons.bind(this)}><i className="icon-search pr-3">
                        </i>Archive
                        </button>
                    </div>
                    ​
                </div>
                <div className="col">
                    <li className="nav-item dropdown d-none d-lg-block">
                        <a aria-expanded="true" className="nav-link dropdown-toggle select-company-dropdown"
                           data-toggle="dropdown" href="#" id="selectLanguage">Select company</a>
                    </li>
                </div>
            </div>
        </div>
    );
}

当单击按钮时,大多数情况下,e.target.value都是由上述函数获取的。但有时它返回未定义的。为什么会发生这种事?下面添加了Console.log输出。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-06 03:25:27

试着

代码语言:javascript
复制
this.changeFilterForButtons

而不是

代码语言:javascript
复制
this.changeFilterForButtons.bind(this)

或在构造函数中:

代码语言:javascript
复制
constructor( props ){
    super( props );
    this.changeFilterForButtons = this.changeFilterForButtons.bind(this);
}

您可以查看本文中有关绑定的更多信息,如下

这就是为什么我们需要绑定事件。

票数 1
EN

Stack Overflow用户

发布于 2019-02-06 06:45:44

首先,我必须说,以下两个答案都是正确的。我的错误是因为它的图标。

代码语言:javascript
复制
<button class="w-25 btn menu-btn" value='archive' onClick={this.changeFilterForButtons.bind(this)}><i className="icon-search pr-3"</i>Archive</button>

当我意外地单击图标时,它将返回未定义的值,因为它没有任何要返回的值。

票数 4
EN

Stack Overflow用户

发布于 2019-05-27 00:26:06

我也遇到了同样的麻烦。当我读到第二条评论时,我看到了在哪里找到解决方案。

CSS解决方案:

代码语言:javascript
复制
button > * {
  pointer-events: none;
}

来源

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54546133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档