美元和冒号在 React 中代表什么?

What do dollar and colon represent in React?

下面给出的冒号和美元在 React 中是什么意思?

冒号示例:

美元示例,(它在表达式之前使用,但为什么):

美元是在字符串中使用变量的 es6 语法。

$ 不是反应。但它的 ES6 特性在 Template Literals basic or template literals.

处更多地调用了模板文字

在 React 中,React 路由器模块中有 Route 和 Link 组件。

路由有两个属性:path and component。当路径与给定组件的路径匹配时,它将return指定的组件

在你的路线中,你说要匹配 movie/anyid 的任何路径,这意味着它导航到具有给定参数

的指定组件(这里是电影)

Link用于指定去哪条路径。它只是 <a> 标签的包装器,有助于导航到指定路径,在您当前的示例中,它导航到 /movie/1 (假设 this.state.movies[index].id 为 1)

好吧,它是 JavaScript ES6 功能,

正如你想象的那样,在 ES6 之前你可以做类似的事情:

var user = 'xyz' + newuser;

ES6:

var user = `xyz${newuser}`;

模板文字由 back-tick (``) 括起来,模板文字可以包含占位符。这些由美元符号和大括号 (${expression}) 表示。

您可以阅读更多关于 Template literals on Mozilla

我也花了很长时间试图找出冒号的工作原理。不得不尝试对示例进行逆向工程,而不是在 API 部分对其进行解释,这非常令人沮丧。

话虽如此,文档 https://reacttraining.com/react-router/core/api/Route 中有一个提示,其中指出路径接受 "Any valid URL path or array of paths that path-to-regexp@^1.7.0 understands"。如果您查看 path-to-regexp 的文档,您会看到 "Named parameters are defined by prefixing a colon to the parameter name ... By default, the parameter will match until the following path segment"

然后您可以查看 https://reacttraining.com/react-router/core/api/match,其中解释了如何获取 match 对象以及如何从中提取参数。

在这种情况下,: 是 React Router(和 Express)用于路径的 path-to-regexp 语法的一部分;它允许您指定一个参数。这有两个含义。

  1. 匹配多个网址。
<Route path='/app/:page'>

将匹配任何 /app/ 后跟任何内容。 请注意,这里有灵活的匹配类型,但它们不是典型的正则表达式,确切地说:https://github.com/pillarjs/path-to-regexp/tree/v1.7.0

  1. 这样做的第二个目的是通过 React Router 的 useParams 挂钩 (https://reactrouter.com/web/api/Hooks/useparams).
  2. 使参数(/app/ 之后的任何内容)可用

有关语法的一个很好的示例,请查看此页面上的“路由参数”部分: https://expressjs.com/en/guide/routing.html