javascript - 当一个 URL 有参数的时候,为什么我们要把子组件放在一个属性里面
问题描述
我目前正在观看有关 React 的教程。
- 为什么我们把属性放在
<Person />
里面而不是放在中间?children
<Route></Route>
- 为什么是
<Person />
包裹在{}
. 我认为{}
jsx 表达式的内部表示其中的所有内容都是 javascript 表达式。但<Person />
不是javascript表达式吗?
解决方案
- 为什么我们将
<Person />
children 属性放在里面而不是在 之间<Route></Route>
?
它们是children
在反应组件中使用的两种方式。我不确定导师为什么同时使用它们。也许他/她只是向您展示了 2 种使用children
.
- 为什么
<Person />
在 {} 之间包裹。我认为 jsx 表达式中的 {} 表示其中的所有内容都是 javascript 表达式。但不是javascript表达式吗?
Route
有一个道具children
,它接收一个功能组件Person
,所以你应该用{}
. 在这里阅读文档。
const Person = () => {
return <p>Person</p>;
};
const App = () => {
return (
<BrowserRouter>
<Switch>
<Route exact path="/" children={<Person />} />
{/* You can rewrite it as below */}
<Route exact path="/" children={() => { return <p>Person</p>; }} />
</Switch>
</BrowserRouter>
);
};
推荐阅读
- haskell - Haskell - 如何获得类型签名“a -> a -> a”?
- java - Java读取带有多个对象的JSON
- json - Jira Api:为什么在创建新问题时将描述与摘要合并?
- javascript - 如何让 Azure 上的 Node.js 以 ES6 模块语法启动,虽然它在家里工作,但现在失败了?
- kubernetes - 现有 pod 上的 K8S cronjob 调度?
- sql - HIVE - 使用具有 DISTINCT 值的 COUNT(*) 获取表的所有列
- sql - 如何从 SQL 中的另一个表中选择列名的值?
- android-studio - 异常:Gradle 任务 assembleDebug 失败,退出代码为 1,Flutter
- git - 无法更新 git 子模块
- sql - 在 PostgresSQL 中替换特殊字符和 Unicode 字符