javascript - 添加了一个 props onPress,因为我正在调用事件handleEvent。但方法内没有打印任何内容

标签 javascript html reactjs redux material-ui

  • 我正在尝试实现一个类似于 Google 航类的文本框。
  • 所以我构建了一个 React 自动完成原型(prototype)。
  • 但我面临着一个问题。
  • 现在,在 Google Flights 文本框中,当我点击文本框时,它会显示所有结果,而无需输入任何内容。
  • 但就我而言,如果我只输入一些内容,它就会显示结果。
  • 因此,我在文本框中添加了一个 onPress 属性,以便调用事件handleEvent。
  • 但方法内没有打印任何内容。
  • 您能否告诉我如何实现,以便将来我自己修复它。
  • 在下面提供我的代码片段和沙箱

https://codesandbox.io/s/xp6x167kq4

enter image description here

 handleEvent = () => {
    console.log("I was clicked");
    alert("I was clicked");
  };


  render() {
    const {
      onChange,
      onClick,
      onKeyDown,
      state: {
        activeSuggestion,
        filteredSuggestions,
        showSuggestions,
        userInput
      }
    } = this;

    let suggestionsListComponent;

    if (showSuggestions && userInput) {
      if (filteredSuggestions.length) {
        suggestionsListComponent = (
          <ul class="suggestions">
            {filteredSuggestions.map((suggestion, index) => {
              let className;

              // Flag the active suggestion with a class
              if (index === activeSuggestion) {
                className = "suggestion-active";
              }

              return (
                <li className={className} key={suggestion} onClick={onClick}>
                  {suggestion}
                </li>
              );
            })}
          </ul>
        );
      } else {
        suggestionsListComponent = (
          <div class="no-suggestions">
            <em>No suggestions, you're on your own!</em>
          </div>
        );
      }
    }

    return (
      <Fragment>
        <input
          type="text"
          onChange={onChange}
          onKeyDown={onKeyDown}
          value={userInput}
          onPress={this.handleEvent}
          //onPress={this.handleEvent}
        />
        {suggestionsListComponent}
      </Fragment>
    );
  }

最佳答案

我相信这是因为在你的初始状态下你已经写了

this.state = {
  activeSuggestion: 0,
  filteredSuggestions: [],
  showSuggestions: false,
  userInput: '',
};

然后你运行

if (showSuggestions && userInput) 但在初始点击时 userInput 仍然等于 '' ,相当于 false。再次在下面,您运行 if (filteredSuggestions.length),它也等于 0,因为当未键入任何内容时,数组filteredSuggestions 为空。

console.log('' == true) => falseconsole.log([].length == true) => false

关于javascript - 添加了一个 props onPress,因为我正在调用事件handleEvent。但方法内没有打印任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54136215/

相关文章:

css - react 如何为不同的组件打印横向/纵向

javascript - Angular 观察指令中 $http.pendingRequests 的变化

javascript - 使用 javascript 禁用链接

html - 在 Chrome 中使用 CSS 打印目录的页码

javascript - 在reactjs中输入字段为空时禁用按钮

javascript - React 中常量文件的翻译

javascript - 每 1 分钟在 chrome 中运行一个脚本

javascript - JS : loop through list of divs to add event by onclick?

Php 浏览一个文件然后获取它的路径

jquery - 如何在选择下拉列表中隐藏所选选项