This logic is about filtering houses based on filters (such as purpose, price etc) when I change the filters nothing happens (no url change) or no error on console. It looks like data is not being passed to searchProperties.
I am unable to find any solution.
Note: Ignore comments.
import classes from "./FilterProperties.module.css";
import { useState } from "react";
import { filterData, getFilterValues } from "../../lib/filterData";
import {
useLocation,useSearchParams, useNavigate} from "react-router-dom";
import DropDown from "./DropDown";
const FilterProperties = () => {
const location = useLocation();
const [filters, setFilters] = useState(filterData);
const [searchParams, setSearchParams] = useSearchParams();
const navigate = useNavigate();
const searchProperties = (filterValues) => {
const path = location.pathname;
console.log(path);
const query = searchParams.get("query");
console.log(query); // undefined
const values = getFilterValues(filterValues); // error
// console.log(values);
values.forEach((item) => {
setSearchParams[item.name] = item.value;
});
navigate({ pathname: path, query });
};
return (
<div className={classes.item}>
{filters.map((filter) => (
<DropDown
key={filter.queryName}
placeholder={filter.placeholder}
filter={filter}
onChange={(e) => {
searchProperties({ [filter.queryName]: e.target.value });
}}
/>
))}
</div>
);
};
export default FilterProperties;