reactjs - 我正在尝试在功能组件中使用钩子,而它会引发意外的令牌解析错误。怎么了?
问题描述
我正在尝试在功能组件中使用反应钩子,但它似乎不起作用。在下文中,您将看到 ref 的使用位置...
import React, { useRef } from "react";
import { useDetectOutsideClick } from "./useDetectOutsideClick";
import './Header.scss';
const Header = ({ handleChange, type, ...otherProps }) => (
const dropdownRef = useRef(null);
const [isActive, setIsActive] = useDetectOutsideClick(dropdownRef, false);
const onClick = () => setIsActive(!isActive);
<nav className="navbar" role="navigation" aria-label="main navigation">
<div className="navbar-brand">
<a className="navbar-item" href="https://bulma.io">
<img src="https://bulma.io/images/bulma-logo.png" width="112" height="28"/>
</a>
...
<div onClick={onClick} ref={dropdownRef}
className={`navbar-item has-dropdown ${isActive ? "active" : "inactive"}`} >
<a className="navbar-link">
More
</a>
<div className="navbar-dropdown">
<a className="navbar-item">
About
</a>
<a className="navbar-item">
Jobs
</a>
<a className="navbar-item">
Contact
</a>
<a className="navbar-item">
Report an issue
</a>
</div>
</div>
...
它在以下几行中引发解析错误:
const dropdownRef = useRef(null);
const [isActive, setIsActive] = useDetectOutsideClick(dropdownRef, false);
const onClick = () => setIsActive(!isActive);
怎么可能修复?
解决方案
我认为您需要将您的活动内容放在这样的对象中:
import React, { useRef } from "react";
import { useDetectOutsideClick } from "./useDetectOutsideClick";
import './Header.scss';
const Header = ({ handleChange, type, ...otherProps }) => (
const dropdownRef = useRef(null);
const [isActive, setIsActive] = useDetectOutsideClick({
dropdownRef: "",
active: false
});
const onClick = () => setIsActive({
dropDownRef: dropdownRef,
active: !isActive.active
});
<nav className="navbar" role="navigation" aria-label="main navigation">
<div className="navbar-brand">
<a className="navbar-item" href="https://bulma.io">
<img src="https://bulma.io/images/bulma-logo.png" width="112" height="28"/>
</a>
<a role="button" className="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbarBasicExample">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
...
还要确保将 ref 标签添加到元素中:
<nav>
<Dropdown ref={dropDownRef}>
//stuff
</Dropdown>
</nav>
推荐阅读
- reactjs - eslint 抱怨未使用的 React var
- c# - KellermanSoftware CompareNetObjects,比较不同类型的集合
- arrays - 我们如何在 awk 中创建数组?
- python - 如何将 TensorFlow 模型转换为 TFLite 模型
- r - 在 Shiny Web 应用程序输出中获取“范围 0 表”
- c - C中的字符串数组和函数的问题
- python - 如何在 django 中使用持久性数据库连接?
- c# - 我想创建评分系统(Unity 2D)
- react-native - 在使用 bottomTabs 应用程序停止时在 React Native 导航中
- php - 在 Woocommerce 中对产品属性的术语名称进行操作和排序