【问题标题】:How i can use props to change my connexion with react js?我如何使用道具来改变我与 react js 的联系?
【发布时间】:2021-11-24 17:06:15
【问题描述】:

当我的本地存储不为空时,我想更改菜单,但我很难使用道具来做到这一点。

我的组件菜单上有带有条件的菜单,并且我的组件应用程序带有导航:

组件菜单

function Menu(props) {
  const showMenu = (props) => {
    if (props.isLoggedIn === true) {
      return (
        <div className="ContainerMenu">
          <ul className="Menu">
            <Link to="/Home">
              {" "}
              <li>who am i</li>
            </Link>
            <li>some of my products</li>
            <Link to="/contact">
              <li>Contact me</li>
            </Link>
            <Link to="/">
              <li className="connexion">Connexion</li>
            </Link>
          </ul>
        </div>
      );
    } else {
      return (
        <div className="ContainerMenu">
          <ul className="Menu">
            <Link to="/">
              <li className="connexion">Connexion</li>
            </Link>
          </ul>
        </div>
      );
    }
  };

  useEffect(() => {
    showMenu();
  }, []);

  return <div>{showMenu()}</div>;
}

export default Menu;

当我的本地存储中有我的电子邮件时,我想将我的登录设置为 true。我很想用道具做到这一点,但我想我错过了什么?

function App(props) {
  const [isLoggedIn, setLoggedIn] = useState(false);

  const ifLoggedIn = () => {
    if (localStorage.getItem("connexion")) {
      setLoggedIn(true);
    }
  };

  useEffect(() => {
    ifLoggedIn();
    console.log(isLoggedIn);
  });

  return (
    <Router>
      <div>
        <Menu isLoggedIn={ifLoggedIn} />
        <Switch>
          <Route path="/contact" component={MeContacter} />
          <Route path="/Home" component={Home} />
          <Route path="/" component={Connexion} />
        </Switch>
        <Footer />
      </div>
    </Router>
  );
}

export default App;

【问题讨论】:

  • 如果你能做一个小提琴或者给一个codeandbox链接会很棒

标签: reactjs stay-logged-in


【解决方案1】:

你有错别字

替换:

 <Menu isLoggedIn={ifLoggedIn} />

作者:

 <Menu isLoggedIn={isLoggedIn} />

您的菜单组件结构不合理:

function Menu(props) {
  const showMenu = () => {
    if (props.isLoggedIn === true) {
      return (
        <div className="ContainerMenu">
          <ul className="Menu">
            <Link to="/Home">
              {" "}
              <li>who am i</li>
            </Link>
            <li>some of my products</li>
            <Link to="/contact">
              <li>Contact me</li>
            </Link>
            <Link to="/">
              <li className="connexion">Connexion</li>
            </Link>
          </ul>
        </div>
      );
    } else {
      return (
        <div className="ContainerMenu">
          <ul className="Menu">
            <Link to="/">
              <li className="connexion">Connexion</li>
            </Link>
          </ul>
        </div>
      );
    }
  };

  return <div>{showMenu()}</div>;
}

export default Menu;

【讨论】:

  • 当我改变它时,我有一个错误无法读取我的菜单组件上的 isLoggedIn 属性
  • 更新代码,你的菜单组件做得不好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2021-04-30
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多