2017-06-05 40 views
2

在句法上,我如何使用do expressions编写switch语句?如何使用do-syntax编写switch语句?

例如这样的:

<div> 
{do{ 
    switch(foo) { 
     case 'a': 
      <Bar/> 
     case 'b': 
      <Baz/> 
    } 
}} 
</div> 

出来作为

'use strict'; 

React.createElement(
    'div', 
    null, 
    function() { 
    switch (foo) { 
     case 'a': 
     React.createElement(Bar, null); 
     case 'b': 
     React.createElement(Baz, null); 
    } 
    }() 
); 

REPL

注意在输出缺乏return秒 - 也就是说,它是无用的。巴贝尔不会让我增加回报来源。是否可以在do内部使用switch

+1

这看起来像在巴别塔的错误。 –

+1

你期望得到什么回报?从哪里返回?什么?你想解决的实际问题是什么? –

+0

'switch'没有返回值,所以'do'没有任何返回值。它看起来像你试图使用'switch'类似于三元操作符,但它不会那样工作。 – sbking

回答

2

这不起作用可能是因为switch不是一个表达式(但既不是if,所以我不知道,它可能只是巴别塔中的一个错误)。对此的解决方法是将值分配给某个变量,并将其放置在与do块的(记得要加break七大洲):

<div> 
{do{ 
    let r; 
    switch(foo) { 
     case 'a': 
      r = <Bar/> 
      break; 
     case 'b': 
      r = <Baz/> 
      break; 
    } 
    r; 
}} 
</div> 
+0

也不要忘记'break'行! – Alnitak