Home > Back-end >  React search and filter: TypeError: setFilterFn is not a function
React search and filter: TypeError: setFilterFn is not a function

Time:10-31

I'm working on a search and filter function. When I type text into the search box, the content that matches the criteria will be filtered out. I want to use the following function to achieve this, but when I type, the "TypeError: setFilterFn is not a function" will occur. I don't know where goes wrong, How should I fix it? Thx a lot!

  const [setFilterFn] = useState({ fn: items => { return items; } })

  const handleSearch = e => {
    let target = e.target;
    setFilterFn({
        fn: items => {
            if (target.value != "")
                return items;
            else
                return items.filter(item => item.fullName.toLowerCase().includes(target.value.toLowerCase()))
        }
    })
}

CodePudding user response:

Take a look at useState function, that function returning array with two arguments, first value of state , the second is callback function which will change your satate value. You are providing only one value, so react assuming that is value not a function. You can read more in docs

CodePudding user response:

The quick fix... add a comma ...

const [,setFilterFn] = useState((items) => ( items));

it also looks as if you may have an issue with your logic..

if (target.value != "")

The operator here should probably be === otherwise you will only filter for blank strings.

  • Related