为什么调用去抖动的函数会引发“不是函数”错误?

时间:2019-01-25 16:35:27

标签: javascript reactjs lodash

我正在创建一个搜索输入,输入时使用lodash debounce来延迟请求。

constructor(props) {
    super(props);
    this.state = {
      query: ""
    };
    this.debouncedFetchSearchList = debounce(this.fetchSearchList, 500);
  }

这些是我用来获取列表的功能:

fetchSearchList = (query: string) => {
    if (query.length >= 3) {
      this.props.setSearchList(query);
    }
  };

  updateQuery = (id: string, value: string) => {
    const query = value;
    this.setState({
      query: query
    });
    this.debouncedFetchSearchList(query);
  };

JSX:

<TextInput
          type="text"
          id="search-items"
          onChange={this.updateQuery}
          label={I18n.search}
          placeholder={I18n.search}
          className="search-items"
        />

当我使用此设置键入内容时,出现错误: “未捕获的TypeError:_this.debouncedFetchSearchList不是函数”

如果我调用console.log(this),我可以看到该函数在那里,并且它的值是lodash包装器。

我缺少明显的东西吗?

1 个答案:

答案 0 :(得分:1)

所以最终这是一个愚蠢的错误。

我错误地导入了它。

我有:SELECT * FROM YourTable WHERE ItemCreatedWhen > DATEADD(DAY,-2,CAST(GETUTCDATE() as DATE)) and ItemCreatedWhen < CAST(GETUTCDATE() as DATE)

应该是:import debounce from "lodash";

我以前认为导入是可以的,因为我想如果输入错了,我会得到一个错误。