reactjs 为什么我在试图举起 prop 时会出现错误?

ca1c2owp  于 2023-03-01  发布在  React
关注(0)|答案(2)|浏览(91)

这里我有状态,我正尝试将它们传递给子组件SearchBar

    • 应用程序组件(父组件)**
// not related code ...

  // search
  const { search, setSearch } = useState("");

  const handleSearch = (e) => {
    setSearch(e.target.value);
  };
  
  // not related code ...

  return (
    <ContextProviders
      // not related code ...
    >
      <div className="App">
        <Navbar />
        <SearchBar search={search} handleSearch={(e) => handleSearch(e)} />
        <Outlet />
      </div>
    </ContextProviders>
  );
}

在SearchBar中,当我键入一些内容以触发setState时,它显示了一个错误:

    • 搜索栏(子组件)**
import { useState } from "react";

export default function SearchBar(props) {
  // not related code ...

  console.log(props);

  return (
    <>
      <div>
        <input
          type="search"
          value={props.search}
          onChange={props.handleSearch}
          // not related code ...
        />
      </div>
    </>
  );
}

我需要将搜索组件(子组件)中输入字段的值获取到应用程序组件(父组件)中,我尝试将设置状态的函数传递到应用程序中,但它不起作用,我得到错误:
未捕获的类型错误:setSearch不是handleSearch处的函数
有人看出问题所在了吗?

yhqotfr8

yhqotfr81#

应将状态初始化为:

const [search, setSearch] = useState("");

然后像这样传递handleSearch函数:

<SearchBar search={search} handleSearch={handleSearch} />
mctunoxg

mctunoxg2#

为什么在handleSearch中传递匿名箭头函数?你只需要指向handleSearch函数,不需要调用它。

相关问题