美元和冒号在 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
语法的一部分;它允许您指定一个参数。这有两个含义。
- 匹配多个网址。
<Route path='/app/:page'>
将匹配任何 /app/
后跟任何内容。
请注意,这里有灵活的匹配类型,但它们不是典型的正则表达式,确切地说:https://github.com/pillarjs/path-to-regexp/tree/v1.7.0
- 这样做的第二个目的是通过 React Router 的
useParams
挂钩 (https://reactrouter.com/web/api/Hooks/useparams). 使参数(/app/
之后的任何内容)可用
有关语法的一个很好的示例,请查看此页面上的“路由参数”部分:
https://expressjs.com/en/guide/routing.html
下面给出的冒号和美元在 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
语法的一部分;它允许您指定一个参数。这有两个含义。
- 匹配多个网址。
<Route path='/app/:page'>
将匹配任何 /app/
后跟任何内容。
请注意,这里有灵活的匹配类型,但它们不是典型的正则表达式,确切地说:https://github.com/pillarjs/path-to-regexp/tree/v1.7.0
- 这样做的第二个目的是通过 React Router 的
useParams
挂钩 (https://reactrouter.com/web/api/Hooks/useparams). 使参数(
/app/
之后的任何内容)可用
有关语法的一个很好的示例,请查看此页面上的“路由参数”部分: https://expressjs.com/en/guide/routing.html