React JSX 中的 try-catch 语句

Tom*_*nap 5 jsx reactjs

根据JSX 参考,这就是 try-catch 语句的样子

try {
  statement*
} [catch (varname : type) {
  statement*
}]* [finally {
  statement*
}]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下

try {
  console.log(window.device.version)
} catch (e : TypeError) {
  console.log('Error')
}
Run Code Online (Sandbox Code Playgroud)

这导致错误

模块构建失败:语法错误:意外令牌,预期)(11:15)

9  |     try {
10 |       console.log(window.device.version)
11 |     } catch (e : TypeError) {
   |                ^
12 |       console.log('Error')
13 |     }
14 |     return (
Run Code Online (Sandbox Code Playgroud)

那么在 JSX 中使用 try-catch 语句的正确方法是什么?

小智 7

在 JSX 或 JavaScript 中你可以这样写

try {
console.log(window.device.version) 
} catch (e) {
console.log('Error')
}
Run Code Online (Sandbox Code Playgroud)

如果您使用 TypeScript,您之前的代码应该可以工作

希望有帮助


Noo*_*bTW 5

反应 JSX

它看起来像 TypeScript 风格。直接用try{ } catch(e) { console.error(e); }就好了。

看看MDN,不要忘记 JSX 只是React.createElement.

JSX - 更快、更安全、更简单的 JavaScript

你提到的链接不是反应 React JSX,而是一个全新的东西,叫做 DeNA JSX。

看看DeNA JSX中的这个问题,以及这个 PR