javascript - 如何避免渲染中嵌套三元?

标签 javascript node.js reactjs if-statement

这是我的情况:

<Form onSubmit={submit}>
                    {something === 0 ?
                        (someData.length && someData.length > 0) ?
                            doSomething() : null :
                        (someOtherData.length && someOtherData.length > 0) ?
                            doSomethingElse() : null
                    }
</Form>

但是,eslint 规则给了我错误:不要嵌套三元表达式

如何避免这种情况? if - else 可以写在return (...) 中来渲染数据吗?

最佳答案

你能在渲染方法返回之前进行验证吗

render () {
  myComponent = <></>;

  if (something === 0) {
      if (someData.length && someData.length > 0) {
        myComponent = doSomething();
      }
  } else if (someOtherData.length && someOtherData.length > 0) {
      myComponent = doSomethingElse();
  }

  return (
    <Form onSubmit={submit}>
      {<myComponent/>}
    </Form>
  )
}

如果您想在组件内进行验证,可以尝试这种方式

<Form onSubmit={submit}>
    {
      something === 0 && someData.length && someData.length > 0
        ? doSomething()
        : something !== 0 && someOtherData.length && someOtherData.length > 0 && doSomethingElse()
    }
</Form>

关于javascript - 如何避免渲染中嵌套三元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58758996/

相关文章:

node.js - 上传带有元数据、 Node 的 blob

javascript - Express 中的路由参数为空

javascript - 变量未定义 - React JS

javascript - Libtool 安装问题

javascript - 是否可以使用纯粹的 javascript 登录来抓取网站 - 在客户端

javascript - .setAttribute ("disabled",假);将可编辑属性更改为 false

node.js - 模块变量存储在node.js 中的范围是什么?

javascript - Vue.js 在组件之间传递数据

javascript - 为什么 React Router v6 不渲染我的组件?

javascript - 使用 Redux 表单,如何仅在任何字段发生更改时才提交?