当前位置:  开发笔记 > 编程语言 > 正文

If-else在React Stateless功能组件中

如何解决《If-else在ReactStateless功能组件中》经验,为你挑选了2个好方法。

我基本上是在重构我的React组件以支持新的无状态功能组件React功能组件.但是,我对if-else功能组件中的语法感到困惑.

旧代码(工作正常):它的作用主要是查找用户当前是否已登录.如果是,则重定向到主页,否则重定向到登录页面.CurrentUser组件返回一个prop currentUser并检查当前状态

import React, {Component} from "react";
import currentUser from "shared/components/CurrentUser";
import Home from "../Home";
import Landing from "../Landing";

class DefaultRouteHandler extends Component {

    render() {
        if (!this.props.currentUser) {
            return ();
        } else {
            return ();
        }
    }
}

export default currentUser(DefaultRouteHandler);

新代码:现在,else如果currentUser的状态为false ,我应该如何检查条件.正如您现在所看到的,它将始终返回主页.

import React from "react";
import currentUser from "shared/components/CurrentUser";
import Home from "../Home";
import Landing from "../Landing";

const DefaultRouteHandler = ({currentUser}) => (
    
);

export default DefaultRouteHandler;

最后在我的route.jsx中我调用了前面提到的组件


如果您需要更多信息,请与我们联系.我也可以粘贴我的CurrentUser组件代码.但是,我认为这个问题没有任何意义.



1> jurassix..:
const DefaultRouteHandler = ({currentUser}) => {
  if (currentUser) {
    return ;
  }
  return ;
};



2> zaq..:

我终于找到了问题所在。我必须在新代码中进行2处更改:

1)将三元运算符用于if-else

2)忘记通过currentUser导出默认值中的包装器来访问实际的道具值

以下代码有效:

import React from "react";
import currentUser from "shared/components/CurrentUser";
import Home from "../Home";
import Landing from "../Landing";

const DefaultRouteHandler = ({currentUser}) => (
    !currentUser ?  : 
);

export default currentUser(DefaultRouteHandler);

感谢@Road提醒我,我没有从currentUser组件传递道具。

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有