【React】你不了解但非常有用的API: React.Children 与 React.cloneElement

本文探讨了React中的两个重要API:React.Children和React.cloneElement。React.Children提供了处理props.children的方法,如map函数,用于遍历和操作子组件。React.cloneElement则用于克隆并修改子组件的props,保留原有的ref和key。文章还通过实例展示了如何使用这两个API解决栅格Card对齐问题,提供了一种简化开发者工作的解决方案。
摘要由CSDN通过智能技术生成

React.Children

React.Children 提供了用于处理 props.children 不透明数据结构的实用方法。

React.Children.map
React.Children.map(children, function[(thisArg)])

在 children 里的每个直接子节点上调用一个函数。如果 children 是一个数组,它将被遍历并为数组中的每个子节点调用该函数。如果子节点为 null 或是 undefined,则此方法将返回 null 或是 undefined,而不会返回数组。

【注意】
如果 children 是一个 Fragment 对象,它将被视为单一子节点的情况处理,而不会被遍历。

cloneElement()

React.cloneElement(
  element,
  [props],
  [...children]
)

以 element 元素为样板克隆并返回新的 React 元素。返回元素的 props 是将新的 props 与原始元素的 props 浅层合并后的结果。新的子元素将取代现有的子元素,而来自原始元素的 key 和 ref 将被保留。

React.cloneElement() 几乎等同于:

<element.type {...element.props} {...props}>{children}</element.type>

但是,这也保留了组件的 ref。这意味着当通过 ref 获取子节点时,你将不会意外地从你祖先节点上窃取它。相同的 ref 将添加到克隆后的新元素中。

下面介绍有趣的玩法。
以下代码,都可以直接复制到codesandbox,查看效果: https://codesandbox.io/s/fe4n6

栅格Card对齐

栅格布局下,如果每个元素是个Card,内容是后端给的,他们的高度不统一,可能出现参差不齐的情况:

import React from 'react';
import ReactDOM from 'react-dom';
import 'antd/dist/antd.css';
import {
    Row, Col } from 'antd';

const App = (props) => {
   
  const a = new Array(props.length).fill('A').join(' ');
  return (
    <div style={
   {
   background: 'red'}}>
      {
   a}
    </div>
  );
};

const data = [20, 30, 40, 50]<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hull Qin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值