react children方法怎么用-精選

          來源:php中文網 | 2023-01-03 09:58:26 |

          本教程操作環境:Windows10系統、react18.0.0版、Dell G3電腦。


          【資料圖】

          react children方法怎么用?

          React.Children詳解

          React.Children提供了處理this.props.children的工具,this.props.children可以任何數據(組件、字符串、函數等等)。React.children有5個方法:React.Children.map(),React.Children.forEach()、React.Children.count()、React.Children.only()、React.Children.toArray(),通常與React.cloneElement()結合使用來操作this.props.children。

          React.Children.map()

          React.Children.map()有些類似Array.prototype.map()。如果children是數組則此方法返回一個數組,如果是null或undefined則返回null或undefined。第一參數是children,即示例中的Father組件里的"hello world!"和() => <p>2333</p>函數。第二個參數是fucntion,function的參數第一個是遍歷的每一項,第二個是對應的索引。

          function Father({children}) {    return(      <div>      {React.Children.map(children, (child, index) => {          ...      })}      </div>        )         }<Father>    hello world!    {() => <p>2333</p>}</Father>

          React.Children.forEach()

          跟React.Children.map()一樣,區別在于無返回。

          React.Children.count()

          React.Children.count()用來計數,返回child個數。不要用children.length來計數,如果Father組件里只有"hello world!"會返回12,顯然是錯誤的結果。

          function Father({children}) {    return(      <div>      {React.Children.count(children)}      </div>        )         }<Father>    hello world!    {() => <p>2333</p>}</Father>

          React.Children.only()

          驗證children里只有唯一的孩子并返回他。否則這個方法拋出一個錯誤。

          function Father({children}) {    return(      <div>      {React.Children.only(children)}      </div>        )         }<Father>    hello world!</Father>

          React.Children.toArray()

          將children轉換成Array,對children排序時需要使用

          function Father({children}) {    let children1 = React.Children.toArray(children);    return(      <div>      {children1.sort().join(" ")}      </div>        )         }<Father>    {"ccc"}    {"aaa"}    {"bbb"}</Father>//渲染結果: aaa bbb ccc

          如果不用React.Children.toArray()方法,直接寫children.sort()就會報錯

          Example:

          例如有這樣的需求,完成一個操作需要3個步驟,每完成一個步驟,對應的指示燈就會點亮。

          index.jsx

          import * as React from "react";import * as ReactDOM from "react-dom";import {Steps, Step} from "./Steps";function App() {    return (        <div>        <Steps currentStep={1}>  //完成相應的步驟,改變currentStep的值。如,完成第一步currentStep賦值為1,完成第二部賦值為2            <Step />            <Step />            <Step />            </Steps>        </div>    );}ReactDOM.render(<App />, document.getElementById("root"));

          Steps.jsx

          import * as React from "react";import "./step.less";function Steps({currentStep, children}) {    return (        <div>         {React.Children.map(children, (child, index) => {            return React.cloneElement(child, {              index: index,              currentStep: currentStep            });         })}      </div>    );}function Step({index, currentStep}: any) {    return <div className={`indicator${currentStep >= index + 1 ? " active" : ""}`} />;}export {Steps, Step};

          steps.less

          .indicator { display: inline-block; width: 100px; height: 20px; margin-right: 10px; margin-top: 200px; background: #f3f3f3; &.active {    background: orange;  }

          推薦學習:《react視頻教程》

          以上就是react children方法怎么用的詳細內容,更多請關注php中文網其它相關文章!

          關鍵詞: children React

          亚洲欧洲国产精品香蕉网| 亚洲精品综合一二三区在线| 久久久无码精品亚洲日韩蜜桃| 亚洲av成人一区二区三区在线观看 | 亚洲av高清在线观看一区二区 | 亚洲AV成人精品一区二区三区| 亚洲熟妇AV一区二区三区浪潮 | 亚洲欧美日韩综合俺去了| 亚洲 日韩经典 中文字幕| 亚洲免费一级视频| 亚洲成人一级电影| 亚洲AV综合色区无码二区偷拍| 亚洲av成人综合网| 亚洲一区二区三区成人网站 | 亚洲色欲久久久综合网东京热| 国产亚洲精久久久久久无码77777| 亚洲综合熟女久久久30p| 在线观看亚洲天天一三视| 亚洲熟妇无码乱子AV电影| 亚洲国产一二三精品无码| 亚洲AV无码不卡在线播放| 亚洲精品成人av在线| 亚洲视频免费一区| 亚洲乱码一区av春药高潮| 亚洲一卡一卡二新区无人区| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲AV无码专区在线厂| 亚洲精品乱码久久久久久不卡| 狠狠亚洲狠狠欧洲2019| 国产亚洲高清不卡在线观看| 亚洲av日韩综合一区在线观看| 综合自拍亚洲综合图不卡区| 亚洲午夜一区二区电影院| 日韩亚洲产在线观看| 人人狠狠综合久久亚洲| 亚洲无码高清在线观看| 亚洲小说区图片区另类春色| 亚洲国产精品久久久久婷婷老年| 亚洲激情电影在线| 亚洲国产成人久久综合| 亚洲精品成人区在线观看|