小编Ahm*_*gdy的帖子

即使条件为真,为什么还要执行块?

几分钟前我在Codeacademy上练习了一些JavaScript,我发现了一些令人困惑的东西.这是代码:

var friends = {};
friends.bill = {
  firstName: "Bill",
  lastName: "Gates",
  number: "(206) 555-5555",
  address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve = {
  firstName: "Steve",
  lastName: "Jobs",
  number: "(408) 555-5555",
  address: ['1 Infinite Loop','Cupertino','CA','95014']
};

var list = function(obj) {
  for(var prop in obj) {
    console.log(prop);
  }
};

var search = function(name) {
  for(var prop in friends) {
    if(friends[prop].firstName === name) {
      console.log(friends[prop]);
      return friends[prop];
    }
    else {
      return  "contact not found";
    }
  }
};

list(friends);
search("Steve");
Run Code Online (Sandbox Code Playgroud)

问题是,当我在搜索功能中将字符串"Steve"作为arg传递时,它返回条件"未找到联系人",而当我在同一搜索功能中将字符串"Bill"作为arg传递时,它显示联系信息.

怎么可能?我究竟做错了什么?

javascript object

5
推荐指数
1
解决办法
114
查看次数

使用 react-router-dom 成功认证后将用户重定向到他们请求的页面

我已经构建了一个公共路由组件,用于登录以在用户未通过身份验证时显示。每当未登录的用户单击受保护的路由时,他将被重定向到登录页面,他可以在其中输入凭据。我想要一种编程方式,以便如果他使用正确的凭据登录,他应该被重定向到他首先尝试访问的页面。例如,如果用户请求个人资料页面,他应该在登录后重定向到该页面,如果用户请求设置页面,也会发生同样的情况。

截至目前,我只能将它们重定向到 home path /。有什么方法可以使用重定向,以便它知道用户请求的路径?

这是我当前的公共路由组件代码

export const PublicRoute = ({
    isAuthenticated,
    component: Component,
    ...rest
}: PublicRouteProps) => (
    <Route
        {...rest}
        component={(props: any) => {
            console.log(props.path);
            return isAuthenticated.auth ? (
                <Redirect to='/' />
            ) : (
                <div>
                    <Component {...props} />
                </div>
            );
        }}
    />
);
const mapStateToProps = (state: ReduxStoreState) => ({
    isAuthenticated: state.isAuthenticated
});

export default connect(mapStateToProps)(PublicRoute);

Run Code Online (Sandbox Code Playgroud)

redirect typescript reactjs react-router react-router-dom

5
推荐指数
1
解决办法
5689
查看次数