SetPage is not a function ERROR 尝试分页时

SetPage is not a function ERROR while trying to paginate

我第一次在 React 应用中尝试分页, 我将 page 和 setPage 作为 props 传递给 COinsPagination.js 但我在某处出错并收到“TYpe error setPage is not a function 而且我无法弄清楚我哪里出错了。我认为我没有做打字错误。

App.js

import React, { useState, useEffect } from "react";
import Coins from "./components/Coins";
import CoinsPagination from "./components/CoinsPagination.js";

import "./App.css";

const App = () => {
  const [coins, setCoins] = useState([]);
  const [q, setQ] = useState("");
  const [page, setPage] = useState(5);
  const getCoinList = async () => {
    // const response = await fetch("https://api.coingecko.com/api/v3/coins/list");
    const response = await fetch(
      `https://api.coingecko.com/api/v3/coins/markets?vs_currency=INR&order=market_cap_desc&per_page=100&page=${page}&sparkline=false`
    );

    const coinList = await response.json();
    console.log(coinList);
    setCoins(coinList);
  };

  useEffect(() => {
    getCoinList();
  }, [page]);
  function search(rows) {
    return rows.filter(
      (row) => row.name.toLowerCase().indexOf(q.toLowerCase()) > -1
    );
  }
  return (
    <div>
      <div style={{ textAlign: "center", padding: ".5rem" }}>
        <label
          htmlFor="search"
          style={{ fontWeight: 700, marginRight: ".3rem" }}
        >
          Search
        </label>
        <input
          type="text"
          id="search"
          value={q}
          name="search"
          onChange={(e) => {
            setQ(e.target.value);
          }}
          style={{ padding: "1.2rem" }}
        />
      </div>
      <div style={{ textAlign: "center" }}>
        <CoinsPagination />
      </div>

      <Coins coins={search(coins)} />
      <CoinsPagination page={page} setPage={setPage} />
    </div>
  );
};

export default App;

CoinPagination.js

import React from "react";
import { Pagination } from "react-bootstrap";

const CoinsPagination = ({ page, setPage }) => {
  // function gotoPageBy(amount) {
  //   setPage((prevPage) => prevPage + 1);
  // }
  return (
    <Pagination>
      <Pagination.First onClick={() => setPage(1)} />     
      <Pagination.Item onClick={() => setPage(1)}>{1}</Pagination.Item>
      <Pagination.Ellipsis />

      <Pagination.Next />
      <Pagination.Last />
    </Pagination>
  );
};

export default CoinsPagination;

您第一次使用 CoinsPagination 时没有任何名为 pagesetPage 的道具。

import React, { useState, useEffect } from "react";
import Coins from "./components/Coins";
import CoinsPagination from "./components/CoinsPagination.js";

import "./App.css";

const App = () => {
  const [coins, setCoins] = useState([]);
  const [q, setQ] = useState("");
  const [page, setPage] = useState(5);
  const getCoinList = async () => {
    // const response = await fetch("https://api.coingecko.com/api/v3/coins/list");
    const response = await fetch(
      `https://api.coingecko.com/api/v3/coins/markets?vs_currency=INR&order=market_cap_desc&per_page=100&page=${page}&sparkline=false`
    );

    const coinList = await response.json();
    console.log(coinList);
    setCoins(coinList);
  };

  useEffect(() => {
    getCoinList();
  }, [page]);
  function search(rows) {
    return rows.filter(
      (row) => row.name.toLowerCase().indexOf(q.toLowerCase()) > -1
    );
  }
  return (
    <div>
      <div style={{ textAlign: "center", padding: ".5rem" }}>
        <label
          htmlFor="search"
          style={{ fontWeight: 700, marginRight: ".3rem" }}
        >
          Search
        </label>
        <input
          type="text"
          id="search"
          value={q}
          name="search"
          onChange={(e) => {
            setQ(e.target.value);
          }}
          style={{ padding: "1.2rem" }}
        />
      </div>
      <div style={{ textAlign: "center" }}>
        <CoinsPagination /> // This is the one I am referring to
      </div>

      <Coins coins={search(coins)} />
      <CoinsPagination page={page} setPage={setPage} />
    </div>
  );
};

export default App;