سلام دوستان خسته نباشید
من میخوام تو صفحه جستجویی که دارم تا قبل از اینکه چیزی جستجو نشده کتابی رو نمایش نده
این کد صفحه جستجوی منه
import React, { useContext } from "react";
import { GlobalState } from "../../../GlobalState";
import SearchItem from "../../utils/items/SearchItem";
import Filters from "./Filters";
function Search() {
const state = useContext(GlobalState);
const [books] = state.searchAPI.books;
return (
<div className="container mt-4">
<div className="row">
<div className="col-md-12">
<Filters />
<ul className="list-inline text-center">
{books.map((book) => {
return <SearchItem key={book._id} book={book} />;
})}
</ul>
</div>
</div>
</div>
);
}
export default Search;
سلام
دوست عزیز شما هر جا کامپوننت سرچ تان صدا زدید props ->emptySearch مقدارش همان مقدار hook search که تعریفش کردید قرار میدید.
const [search , setSearch ] = useState("");
<Search emptySearch={search} />
import React, { useContext } from "react";
import { GlobalState } from "../../../GlobalState";
import SearchItem from "../../utils/items/SearchItem";
import Filters from "./Filters";
function Search(props) {
const { emptySearch } = props
const state = useContext(GlobalState);
const [books] = state.searchAPI.books;
return (
<div className="container mt-4">
<div className="row">
<div className="col-md-12">
<Filters />
<ul className="list-inline text-center">
{emptySearch == "" ? '': books.map((book) => {
return <SearchItem key={book._id} book={book} />;
})}
</ul>
</div>
</div>
</div>
);
}
export default Search;
انگار در لحظه لود صفحه متغیر books رو با نتیجه api پر کردی.
این کار رو انجام نده و زمانی کتابها رو لود که کاربر رو دکمه جستجو یا هر گزینه دیگهای که گذاشتی کلیک کنه.
من react کار نیستم ولی کدت سادهست و به نظر اینطور میاد.
سلام
دوست عزیز شما هر جا کامپوننت سرچ تان صدا زدید props ->emptySearch مقدارش همان مقدار hook search که تعریفش کردید قرار میدید.
const [search , setSearch ] = useState("");
<Search emptySearch={search} />
import React, { useContext } from "react";
import { GlobalState } from "../../../GlobalState";
import SearchItem from "../../utils/items/SearchItem";
import Filters from "./Filters";
function Search(props) {
const { emptySearch } = props
const state = useContext(GlobalState);
const [books] = state.searchAPI.books;
return (
<div className="container mt-4">
<div className="row">
<div className="col-md-12">
<Filters />
<ul className="list-inline text-center">
{emptySearch == "" ? '': books.map((book) => {
return <SearchItem key={book._id} book={book} />;
})}
</ul>
</div>
</div>
</div>
);
}
export default Search;
خیلی ممنون که وقت گذاشتید
این صفحه ای هست که کتاب ها رو فیلتر میکنه و APIها رو از GlobalState که قبلا قرار دادم میگیره
import React, { useContext } from "react";
import { GlobalState } from "../../../GlobalState";
function Filters() {
const state = useContext(GlobalState);
const [search, setSearch] = state.searchAPI.search;
return (
<div className="container mt-1">
<div className="row">
<input
type="text"
className="form-control col-md-6 offset-md-3 badge-pill"
placeholder="جــســتــجــو"
value={search}
onChange={(e) => setSearch(e.target.value.toLowerCase())}
/>
</div>
</div>
);
}
export default Filters;
اینم آیتم های فیلتر شده رو نشون میده
import React from "react";
import { Link } from "react-router-dom";
function SearchItem({ book }) {
return (
<div className="container-fluid col-md-8">
<div className="box6">
<div className="ol-md-12 col-sm-12 col-xs-12 box6-inner text-center">
<div className="f7 co">{book.title}</div>
<div className="card-body">
<Link
to={`/book/${book._id}`}
className="btn icon fa fa-eye mt-3"
/>
</div>
</div>
</div>
</div>
);
}
export default SearchItem;
من اینجا نمیتونم از هوک useState استفاده کنم
چطور میتونم این کارو انجام بدم؟
ممنون میشم اگه بتونی راهنماییم کنی❤️
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟