javascript - 如果对象未定义,加载组件的最佳方法

标签 javascript reactjs

我对 React 很陌生,我正在开发一个显示某些组件的应用程序,如下所示:

{asset.exists && (
  <SomeComponent/>
 )}

但是,这似乎有点笨拙,而且我不断遇到这似乎不是最好的方法的情况。

就像下面的例子:

{user.email == asset.email &&
    <SomeComponent

这不起作用,因为在执行此代码时用户未定义。我认为 ComponentDidMount 是正确的解决方案。但是,我无法让它工作。我基本上正在寻找处理这种情况的正确方法,或者确认 ComponentDidMount 是正确的方法

最佳答案

您可以通过链接 && 来提供所需数量的检查。例如,检查 user 是否真实,并检查 user.email 是否真实 && 检查 user.email 是否与 asset.email< 匹配:

{user && user.email && (user.email === asset.email) &&
 // render something
}

考虑到您可能会发生复杂的验证,您还可以考虑将其移动到一个函数以将逻辑包含在集中位置:

isValidUser(user, asset) {
  return user && user.email && (user.email === asset.email);
}

// ...

// may be without 'this' depending on location of function
{this.isValidUser(user, asset) &&
   // render something
}

希望有帮助!

关于javascript - 如果对象未定义,加载组件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52785510/

相关文章:

javascript - 展开和折叠菜单,无需将用户带到页面顶部

javascript - 基金会揭示模态 : how can I return to parent modal after closing modal-in-a-modal

javascript - 在 ReactJS 中设置输入时出错,标签覆盖/覆盖输入集的值,使用 material.ui

javascript - 如何在 react 中显示图像文件夹中的每个图像

javascript - 在自执行函数中访问阴影变量

javascript - 自定义事件外观 primefaces 时间表

javascript - React Hooks - 更新父组件而不触发无限循环

javascript - 我如何在 React 的 props 中应用 css 样式?

javascript - 如何在react变量中获取onChange的输入值?

javascript - 无法获取 document.execCommand ('undo' ) 在浏览器中以相同的方式工作