如何用do-syntax编写switch语句?

时间:2017-06-05 16:29:24

标签: javascript babel

从语法上讲,如何使用do expressions编写switch语句?

e.g。这样:

<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 - 即它没用。 Babel不会让我在源头添加回报。甚至可以在switch表达内使用do es吗?

1 个答案:

答案 0 :(得分:2)

这可能不起作用,因为switch不是表达式(但if都不是,所以我不知道,它可能只是Babel中的一个错误)。解决方法是将值分配给某个变量并将其放在do块的位置(还记得添加break):

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