There is a function that I want to pass to a link component. How would I do it? I tried using state and useLocation and while they work good for normal variables, useLocation sends null when trying to pass down a function.
const function=someFunction(){}
<Link state={func:function} to="/LoginScreen" style={style.a} >
Login
</Link>
This does not work.
Code trying to use a React context:
import React, { useState } from "react";
import { Link } from "react-router-dom";
const RefreshDisplayContext = React.createContext();
function Launchpad() {
const [launchpadState, updatelaunchpadState] = useState({
userIsLoggedIn: false
});
function refreshDisplay(event) {
updatelaunchpadState({ userIsLoggedIn: true });
}
return (
<RefreshDisplayContext.Provider value={refreshDisplay}>
<div>
{launchpadState.userIsLoggedIn ? (
<p>User is Logged In </p>
) : (
<p>User is Not Logged In </p>
)}
<Link to="login" state={launchpadState}>
Login via Child
</Link>
</div>
</RefreshDisplayContext.Provider>
);
}
export { Launchpad, RefreshDisplayContext };
import React, { useState } from "react";
import { RefreshDisplayContext } from "../routes/Launchpad";
function Login(props) {
const refreshDisplay = React.useContext(RefreshDisplayContext);
return (
<button
type="button"
onClick={() => refreshDisplay({ userIsLoggedIn: true })}
>
Login
</button>
);
}
export { Login };
import ReactDOM from "react-dom/client";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import { Launchpad } from "./routes/Launchpad";
import { Login } from "./routes/Login";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<BrowserRouter>
<Routes>
<Route path="/" element={<Launchpad />} />
<Route path="/login" element={<Login />} />
</Routes>
</BrowserRouter>
);