I'm trying to use react hooks to create a hover to appear a div and i'm having this issues:
Line 69:31: React Hook "useState" is called in function "renderHideOptionalClauseTrigger" which is neither a React function component or a custom React Hook function react-hooks/rules-of-hooks
Search for the keywords to learn more about each error.
Here is my code base:
import React, { useState, useEffect } from "react";
const renderHideOptionalClauseTrigger = () => {
const [inHover, setHover] = useState(false);
return (
<div className="my-option-clause">
<text>My Optional Loan Clause</text>
<svg
width="16"
height="16"
viewBox="0 0 16 16"
fill="none"
xmlns="http://www.w3.org/2000/svg"
onMouseEnter={() => setHover(true)}
onm ouseLeave={() => setHover(false)}
>
<path fill-rule="evenodd" clip-rule="evenodd" d="..."/>
</svg>
</div>
);
};
function LoanTerms(props) {
const router = useRouter();
const {
currentLoan,
getUserLoanRequest,
updateUserLoanProposalRequest,
user,
} = props;
return (
<>
...
<Collapsible
trigger={renderOptionalClauseTrigger()}
classParentString="opt-data"
overflowWhenOpen="visible"
triggerWhenOpen={renderHideOptionalClauseTrigger()}
>
<div className="FlowCard__info-text">
Will be added verbatim as last clause to the loan
agreement. See{" "}
<Link className="orange-link" to="/product">
Product page
</Link>{" "}
for other clauses. (1000 characters)
</div>
<>
CodePudding user response:
React expects React components to be named with a capital first letter. Try RenderHideOptionalClauseTrigger instead of renderHideOptionalClauseTrigger
CodePudding user response:
In order to render your component and use it anywhere, you have to export the component at the end of the file. In your case, if you want to use LoanTerms
, you should write export default LoanTerms
.