javascript - 在类组件中导入功能组件
问题描述
我创建了一个基于钩子的功能组件并尝试在基于类的组件中导入该功能组件,但我得到了以下错误
功能组件代码:-
import React, { useState } from "react";
const SearchBar = () => {
const [searchBtn, setSearchBtn] = useState(false);
return (
<div className="search-bar">
<input className="search-text" type="text" placeholder="Search..." />
{searchBtn ? (
<button
title="Back"
onClick={() => setSearchBtn(false)}
className="search-btn "
/>
) : (
<button
title="Search"
onClick={() => setSearchBtn(true)}
className="search-btn "
/>
)}
</div>
);
};
export default SearchBar;
我正在使用 react-dom 版本:16.8.6
解决方案
钩子规则
仅在顶层调用 Hooks
不要在循环、条件或嵌套函数中调用 Hook。相反,请始终在 React 函数的顶层使用 Hooks。通过遵循此规则,您可以确保每次渲染组件时都以相同的顺序调用 Hook。这就是允许 React 在多个useState
和useEffect
调用之间正确保留 Hooks 状态的原因。(如果您好奇,我们将在下面深入解释。)
为了更好地理解检查这个https://reactjs.org/docs/hooks-rules.html
推荐阅读
- xml - Delphi XML 验证与 XSD
- python - 如果某人使用的是 32 位 PC,则阻止他访问我的软件
- javascript - 在网格上拖放对象列表
- c - 我如何为这个二维数组动态分配空间有什么问题?
- python - TypeError: __init__() 缺少 3 个必需的位置参数?
- ruby-on-rails - 无法将 Rails 6 应用程序部署到 Heroku。包括错误日志
- javascript - 这个递归组合函数中的“return a”是做什么的?
- javascript - 单击检查答案按钮时如何使用JavaScript更改正确答案的颜色
- c# - Mysql Windows 窗体 | 连接必须有效且打开
- swiftui - 当其他属性发生变化时如何添加一个可观察的属性