javascript - 使用 Context API 与 CloneElement 为直接后代传递道具
问题描述
所以,我有两个组件,一个永远是另一个的直系后代。我想将道具从父组件传递给子组件。可能有多个子组件。有两种方法可以实现它。
React.Children.map(children, (child) =>
React.cloneElement(child, { someProp: 'value' })
)
或使用上下文 API
<Context.Provider value={{ someProp: 'value' }}>
{this.props.children}
</Context.Provider>
两者都会产生相同的 DOM 结构,但是,Context API 的代码会稍微多一些,并且会产生更多的 React 组件。
那么哪一个更注重性能和推荐。我找不到与此比较相关的任何讨论,因此在这里询问。
解决方案
上下文 API 的使用对于将数据传递给直接后代似乎有点过分了。
如果孩子知道数据将从父母那里传递(这是通过使用 来推测的<Context.Consumer>
),它可以直接使用渲染道具模式,例如:
<Parent>{passedProps => <Child {...passedProps}/>}</Parent>
和
{children({ someProp: 'value' })};
推荐阅读
- django - 在 docker 中使用 gunicorn 运行 Django 并重新加载会产生 TypeError
- xcode - IOS 应用程序上传在分发应用程序上显示一些关键错误
- angular - 连接到 netty-socket.io 服务器时的角度客户端“服务器错误”
- sql - SQL根据来自另一张表的连接从一张表中提取时间范围
- sql - 如何同时使用(group by)和(order by)?
- c++ - C++ 如何防止内存保护违规?
- python-3.x - 如何正确使用 image_dataset_from_directory?
- java - Hibernate - 在保存时将生成的 id 插入除 id 1 之外的列中
- laravel - LARAVEL 8 - 会话过期后在锁定页面中重定向
- wpf - 如何使用xaml画一条带箭头和直角的线