代碼不起作用,請為我更正代碼
錯誤是無法讀取未定義的屬性(讀取“toLowerCase”)
這是來自谷歌瀏覽器控制臺的錯誤訊息
我認為錯誤是我的代碼中的這一行:
const keys = ["type, name"];
const search = () => {
return totalCar.filter((item) =>
keys.some((key) => item[key].toLowerCase().includes(query))
);
};
這是我的完整代碼租了一個汽車應用程式,即使在復制粘貼相同的錯誤之后,我也無法創建該應用程式
import React from "react";
import { useEffect, useState } from "react";
import { useDispatch, useSelector } from "react-redux";
import Layout from "../components/Layout";
import { getAllCars } from "../redux/actions/actions";
import axios from "axios";
import Loading from "../components/Loading";
import { Link, useNavigate } from "react-router-dom";
import { DatePicker } from "antd";
const { RangePicker } = DatePicker;
const Home = () => {
const navigate = useNavigate();
const { cars } = useSelector((state) => state.reducer);
const { loading } = useSelector((state) => state.loading);
const [totalCar, setTotalCar] = useState([]);
const [category, setCateggory] = useState([]);
const [query, setQuery] = useState("");
console.log(cars);
const dispatch = useDispatch();
useEffect(() => {
dispatch(getAllCars());
}, [dispatch]);
useEffect(() => {
if (!localStorage.getItem("userInfo")) {
navigate("/login");
}
setTotalCar(cars);
}, [cars, navigate]);
useEffect(() => {
const fetchData = async () => {
const result = await axios.get("/api/category");
console.log(result.data);
setCateggory(result.data);
};
fetchData();
}, []);
const setFilter = () => {
var temp = [];
for (var car of cars) {
if (car.bookedTimeSlots.length === 0) {
temp.push(car);
}
}
setTotalCar(temp);
};
const filterResult = (catItem) => {
const catResult = totalCar.filter((curCat) => {
return curCat.type === catItem;
});
setTotalCar(catResult);
};
const keys = ["type, name"];
const search = () => {
return totalCar.filter((item) =>
keys.some((key) => item[key].toLowerCase().includes(query))
);
};
return (
<Layout>
<div className="slider">
<div className="left">
<h1 className="title"> Rent a Beautiful car</h1>
</div>
<div className="right">
<img src="./images/slider/peugeot.png" alt="" />
</div>
</div>
<div className="content">
<div className="content-row">
<h1 className="big-title">Top cars for Rent</h1>
<div className="content-flex">
<div className="content-row flex-1">
<div className="div-filter">
<h2 className="car-subtitle">****Filter by search****</h2>
<input
type="text"
placeholder="Search..."
onChange={(e) => setQuery(e.target.value)}
className="search"
/>
<h2 className="car-subtitle">
****Filter for availability****
</h2>
</div>
<RangePicker
showTime={{ format: "HH:mm" }}
format="YYYY-MM-DD HH:mm:ss"
onChange={setFilter}
/>
<div className="div-filter2">
<h2 className="car-subtitle">****Filter By Type****</h2>
</div>
<div className="filter-btns">
<button onClick={() => setTotalCar(cars)} className="btn-type">
All
</button>
{category.map((cat) => (
<button
key={cat._id}
onClick={() => filterResult(cat.type)}
className="btn-type"
>
{cat.type}
</button>
))}
</div>
</div>
<div className="content-row flex-2">
{loading ? (
<Loading />
) : (
<div className="content-groups">
{search(totalCar).map((car) => (
<div className="card" key={car._id}>
<div className="card-body">
<img
src={car.image}
className="img-cars"
alt={car.name}
/>
</div>
<div className="card-footer">
<div className="card-footer-top">
<h3 className="car-title">{car.name}</h3>
<p className="per-day">
Per Day:
<span
className="bold-
price"
>
${car.payPerDay.toFixed(2)}
</span>
</p>
</div>
<div className="card-footer-bottom">
<button className="rent-now">
<Link to={`/car/${car._id}`} className="rent-link">
Rent Now
</Link>
</button>
</div>
</div>
</div>
))}
</div>
)}
</div>
</div>
</div>
</div>
</Layout>
);
};
export default Home;
uj5u.com熱心網友回復:
換一串
const keys = ["type, name"];
到兩個字串
const keys = ["type", "name"];
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/513833.html
標籤:反应表示
