将默认 className 设置为空字符串,然后提供两个条件

Posted

技术标签:

【中文标题】将默认 className 设置为空字符串,然后提供两个条件【英文标题】:Set default className to an empty string then provide two conditions 【发布时间】:2021-05-08 17:22:41 【问题描述】:

我有这个条件 className=errors.firstName ? "invalid" : "valid"

但如果这两个条件都不满足,我需要将其默认为空字符串。

我正在努力思考如何解决这个问题,由于我找不到任何资源,因此不胜感激。

我将不得不在其他文本区域字段上多次调用它,所以我知道我需要使其可重用。

【问题讨论】:

现在您有两个状态,truefalse。所以你应该有一个像initialStatus这样的初始状态,然后你可以像这样实现你想要的:className=(errors.firstName === 'initialStatus')?"":(errors.firstName)? "invalid":"valid" 如果我的评论不清楚,请告诉我您是否可以拥有initialStatus。所以我可以为你做一个sn-p 好的,所以我创建了一个变量intialState并将其设置为false,我也尝试将其设置为一个空字符串,但它仍然将默认样式设置为valid而不是@ 987654330@ 不,你没明白我的意思。看,只需给errors.firstName 一个名为initialStatus 的初始值,然后使用我发布的条件。简而言之,errors.firstName 需要具备三种状态。你可以用你能想到的任何方式来做到这一点。我说的是我想到的第一种方式。 (现在你有两个状态 truefalse。你需要三个。再做一个) 【参考方案1】:

您可以为此使用https://www.npmjs.com/package/classnames。

className=classNames( invalid: errors.firstName === true , valid: errors.firstName === false )

所以如果errors.firstName = true,那么className就是invalid。如果errors.firstName = false,那么它将是valid。如果errors.firstName 是undefined className 将是一个空字符串。

【讨论】:

【参考方案2】:

让我们假设您的 firstName 错误首先不存在,或者在错误对象中使用 null 初始化。

const errors =  firstName: null  // or not having firstName

然后检查是否有 firsName 错误(可能是字符串类型,例如 firstName 错误消息或任何布尔值)。

<Component
  className=
    // if you explicitly set it to null use strict in-equality here
    errors.firstName != null ? "" : errors.firstName ? "invalid" : "valid"
  
/>;

你也可以阻止设置默认的空字符串,因为它是默认的:)

<Component
  ...(errors.firstName != null && 
    className: errors.firstName ? "invalid" : "valid",
  )
/>;

【讨论】:

以上是关于将默认 className 设置为空字符串,然后提供两个条件的主要内容,如果未能解决你的问题,请参考以下文章

将 Access 97 文本字段的默认值设置为空字符串

如何使用 Access VBA 将具有默认值的未绑定文本框的值设置为空字符串

Django CharField 不默认为空字符串

我可以将 null 设置为 Spring 中 @Value 的默认值吗?

空字符串字段作为空字段

将 select2 下拉列表的值设置为空字符串