javascript - 渲染中的 JSX 语法箭头函数
问题描述
我刚刚在另一个问题中看到了这段代码,但我不明白它是如何工作的:
let Parent = () => (
<ApiSubscribe>
{api => <Child api={api} />}
</ApiSubscribe>
)
我理解这样的事情:
let Parent = ({api}) => (
<ApiSubscribe>
<Child api={api} />
</ApiSubscribe>
)
{foo => <Bar bar={bar} />}
但从未在渲染中看到过,
有人可以帮我理解吗?
解决方案
children
组件可以通过prop访问给它的子元素。如果给定一个函数作为子函数,则组件可以调用此函数。children
然后,调用该函数的组件可以使用它认为合适的任何参数调用该函数。
例子
const Child = props => {
return props.children('test');
};
const Parent = () => (
<Child>
{function(arg1) {
return <div> This is a {arg1} </div>;
}}
</Child>
);
ReactDOM.render(<Parent />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
推荐阅读
- ansible - 您将如何检查 ansible URI 模块正在创建的 url?
- postgresql - 在同一数据库中使用 Prisma ORM 的多个服务的最佳实践?
- excel - 如何在 VBA 中为不同工作表中的不同单元格创建数据验证菜单
- r - 在 r 中执行变量的成对交互
- mysql - 在 SQL 中同时从多列和多行计数
- botframework - 有没有办法从 MS 消息扩展中的代码动态更改清单中的“命令”
- r - 数据转换:将分类数据框传播到计数 R
- python - Tkinter:按下按钮时读取并存储文本
- ios - 在目标之间共享 UserDefault 不起作用
- symfony - Symfony 5.2 模拟服务在第二个请求中消失