首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将三元运算符转换为非三元运算符

将三元运算符转换为非三元运算符
EN

Stack Overflow用户
提问于 2020-08-05 01:17:12
回答 1查看 52关注 0票数 0

我是一个新的javascript(react)程序员,试图将三元运算符更改为normal,如果不是,这是我的问题:如果完成,我想向textDecoration属性添加行,' else‘我什么也不想要,三元运算符的代码正在运行,但我想将其更改为非三元(如果不是,则为normal),这是三元版本:

代码语言:javascript
运行
复制
function Todo({todo}) {
    return <div style={{
      textDecoration: tod.isCompleted ? 'line-through' : ''
    }} />;
}

下面是我尝试做的事情:

代码语言:javascript
运行
复制
function Todo({todo}) {
  return <div style={{
    if (todo.isCompleted) {
      'line-through'
    } else {
      ''
    }} />;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-05 01:23:54

我想知道使用三元组有什么问题?这是完全可以接受的。

无论如何,您不能在这样的JSX元素中包含if/else。我会将文本装饰提取到一个变量中,如下所示:

代码语言:javascript
运行
复制
function Todo({todo}){
  let textDecoration = '';
  if(todo.isCompleted){
    textDecoration = 'line-through';
  }
  return <div style={{textDecoration}}/>;
}

有趣的是,这里有一项提议--就像你演示的那样。它还没有在javascript中出现,我也不希望它很快就会出现。但如果你使用巴别塔,你可以玩它,如果你想的话。这是do表达式。你可以这样使用它:

代码语言:javascript
运行
复制
function Todo({todo}){
  return <div style={{
    textDecoration: do {
        if(todo.isCompleted){
            'line-through';
        }
        else {
            '';
        }
    }
  }}/>;
}

不过,我并不真的推荐它。我只是想把它作为一点有趣的知识来提供。这里有一个巴别塔游乐场的链接:babel

你可以在这里阅读该提案:https://github.com/tc39/proposal-do-expressions

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63251949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档