宣布不使用React-Redux应用程序

时间:2016-12-01 14:11:39

标签: javascript reactjs redux lodash

我正在构建一个在按键上执行API请求的函数,但我想要这个去抖动。

目前无效并产生错误:lodash.js:10319 Uncaught TypeError: Expected a function

这是一个带有控制台日志而不是异步请求的代码段,这也不起作用!

import React from 'react';
const _ = require('lodash');

const method = () => {
    return _.debounce(testFunc(), 3000);
};

const testFunc = () => {
    console.log('echo echo test test');
};


const SearchBox = ({ onTypingSearch, searchTerm }) => (
    <form>
        <p>Search: {searchTerm}</p>
        <input
            onChange={(e) => {
                console.log(e.target.value);                
                onTypingSearch(e.target.value);
                console.log(method);
                method();
            }}
                value={searchTerm}
        />
  </form>
);

export default SearchBox;

1 个答案:

答案 0 :(得分:4)

你必须去除该功能,而不是调用它的结果:

此:

const method = () => {
    return _.debounce(testFunc(), 3000);
};

对此:

const method = () => {
    return _.debounce(testFunc, 3000);
};

更新

你设置它的方式,method会返回一个去抖动功能。因此调用method()将返回一个函数。然后你必须打电话给它:method()()

最好这样做:

const method = _.debounce(() => {
    return testFunc();
}, 3000);

如果你想要args:

const method = _.debounce((e) => {
    return testFunc(e);
}, 3000);

然后,您可以继续按照您目前的方式调用:method()