欧美xxxx做受欧美_www.xxxx精品_国产一区二区三区蝌蚪_国产原创欧美精品_国产福利精品一区_亚洲精品久久久久久下一站 _久久精品国产网站_久久99精品国产_久久综合给合久久狠狠狠97色69_91久久久久久久久久久

React父組件怎么調(diào)用子組件的方法-環(huán)球短訊

來源:php中文網(wǎng) | 2022-12-27 18:46:18 |


(資料圖片僅供參考)

本教程操作環(huán)境:Windows7系統(tǒng)、react18版、Dell G3電腦。

在React中,我們經(jīng)常在子組件中調(diào)用父組件的方法,一般用props回調(diào)即可。但是有時(shí)候也需要在父組件中調(diào)用子組件的方法,通過這種方法實(shí)現(xiàn)高內(nèi)聚。有多種方法,請按需服用。

類組件中

1、React.createRef()

優(yōu)點(diǎn):通俗易懂,用ref指向。

缺點(diǎn):使用了HOC的子組件不可用,無法指向真是子組件

比如一些常用的寫法,mobx的@observer包裹的子組件就不適用此方法。

import React, { Component } from "react";class Sub extends Component {  callback() {    console.log("執(zhí)行回調(diào)");  }  render() {    return <div>子組件</div>;  }}class Super extends Component {  constructor(props) {    super(props);    this.sub = React.createRef();  }  handleOnClick() {    this.sub.callback();  }  render() {    return (      <div>        <Sub ref={this.sub}></Sub>      </div>    );  }}

2、ref的函數(shù)式聲明

優(yōu)點(diǎn):ref寫法簡潔缺點(diǎn):使用了HOC的子組件不可用,無法指向真是子組件(同上)

使用方法和上述的一樣,就是定義ref的方式不同。

...<Sub ref={ref => this.sub = ref}></Sub>...

3、使用props自定義onRef屬性

優(yōu)點(diǎn):假如子組件是嵌套了HOC,也可以指向真實(shí)子組件。缺點(diǎn):需要自定義props屬性
import React, { Component } from "react";import { observer } from "mobx-react"@observerclass Sub extends Component {componentDidMount(){    // 將子組件指向父組件的變量this.props.onRef && this.props.onRef(this);}callback(){console.log("執(zhí)行我")}render(){return (<div>子組件</div>);}}class Super extends Component {handleOnClick(){       // 可以調(diào)用子組件方法this.Sub.callback();}render(){return (          <div><div onClick={this.handleOnClick}>click</div><Sub onRef={ node => this.Sub = node }></Sub>     </div>)}}

函數(shù)組件、Hook組件

1、useImperativeHandle

優(yōu)點(diǎn):1、寫法簡單易懂2、假如子組件嵌套了HOC,也可以指向真實(shí)子組件缺點(diǎn):1、需要自定義props屬性2、需要自定義暴露的方法
import React, { useImperativeHandle } from "react";import { observer } from "mobx-react"const Parent = () => {  let ChildRef = React.createRef();  function handleOnClick() {    ChildRef.current.func();  }  return (    <div>      <button onClick={handleOnClick}>click</button>      <Child onRef={ChildRef} />    </div>  );};const Child = observer(props => {  //用useImperativeHandle暴露一些外部ref能訪問的屬性  useImperativeHandle(props.onRef, () => {    // 需要將暴露的接口返回出去    return {      func: func,    };  });  function func() {    console.log("執(zhí)行我");  }  return <div>子組件</div>;});export default Parent;

2、forwardRef

使用forwardRef拋出子組件的ref

這個(gè)方法其實(shí)更適合自定義HOC。但問題是,withRouter、connect、Form.create等方法并不能拋出ref,假如Child本身就需要嵌套這些方法,那基本就不能混著用了。forwardRef本身也是用來拋出子元素,如input等原生元素的ref的,并不適合做組件ref拋出,因?yàn)榻M件的使用場景太復(fù)雜了。

import React, { useRef, useImperativeHandle } from "react";import ReactDOM from "react-dom";import { observer } from "mobx-react"const FancyInput = React.forwardRef((props, ref) => {  const inputRef = useRef();  useImperativeHandle(ref, () => ({    focus: () => {      inputRef.current.focus();    }  }));  return <input ref={inputRef} type="text" />});const Sub = observer(FancyInput)const App = props => {  const fancyInputRef = useRef();  return (    <div>      <FancyInput ref={fancyInputRef} />      <button        onClick={() => fancyInputRef.current.focus()}      >父組件調(diào)用子組件的 focus</button>    </div>  )}export default App;

總結(jié)

父組件調(diào)子組件函數(shù)有兩種情況

子組件無HOC嵌套:推薦使用ref直接調(diào)用有HOC嵌套:推薦使用自定義props的方式

以上就是React父組件怎么調(diào)用子組件的方法的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!

關(guān)鍵詞: React.js

欧美xxxx做受欧美_www.xxxx精品_国产一区二区三区蝌蚪_国产原创欧美精品_国产福利精品一区_亚洲精品久久久久久下一站 _久久精品国产网站_久久99精品国产_久久综合给合久久狠狠狠97色69_91久久久久久久久久久
久久久精品国产免大香伊| 日韩精品亚洲一区二区三区免费| 欧美性受xxxx黑人xyx性爽| 久久久高清一区二区三区| 精品一区二区影视| 欧美大片日本大片免费观看| 日本网站在线观看一区二区三区| 欧美人成免费网站| 美女诱惑一区二区| 久久夜色精品国产欧美乱极品| 日韩不卡一区二区| 26uuu国产日韩综合| 高清成人免费视频| 一区二区三区免费看视频| 欧美日韩精品一二三区| 精品在线你懂的| 亚洲同性同志一二三专区| 在线免费观看日本欧美| 七七婷婷婷婷精品国产| 久久精品人人做人人爽97| 99久久精品免费看国产免费软件| 亚洲人成在线播放网站岛国| 91精品国产欧美一区二区成人| 免费在线一区观看| 中文字幕亚洲区| 欧美一区二区三区公司| av资源网一区| 男女性色大片免费观看一区二区 | 欧美私人免费视频| 国产一区999| 亚洲激情男女视频| 国产日韩影视精品| 日韩欧美激情四射| 欧美视频自拍偷拍| 国产成人精品免费视频网站| 天堂一区二区在线免费观看| 亚洲日本一区二区| 国产欧美日韩综合精品一区二区| 在线成人免费观看| 欧美精品色综合| 96av麻豆蜜桃一区二区| 国产福利一区在线观看| 久久国产精品色| 日本特黄久久久高潮| 天天操天天干天天综合网| 亚洲精品免费播放| 亚洲欧洲日韩在线| 国产精品进线69影院| 国产日韩v精品一区二区| 精品国产伦一区二区三区免费 | 国产亚洲精品福利| 26uuu亚洲综合色| 欧美videos大乳护士334| 日韩欧美一级二级三级| 91精品国产综合久久福利| 欧美肥大bbwbbw高潮| 在线不卡免费欧美| 欧美一区二区三区免费| 日韩一级片在线观看| 91精品国产美女浴室洗澡无遮挡| 777欧美精品| 欧美电影免费提供在线观看| 91精品久久久久久蜜臀| 精品免费视频一区二区| 国产色产综合色产在线视频| 中文字幕乱码亚洲精品一区| 国产精品九色蝌蚪自拍| 亚洲国产另类av| 青青青爽久久午夜综合久久午夜 | 欧美高清在线一区| 亚洲视频图片小说| 丝袜亚洲另类欧美综合| 国产麻豆9l精品三级站| 成人激情黄色小说| 在线视频一区二区免费| 欧美精品一区二区久久婷婷| 中文字幕在线不卡| 青青青爽久久午夜综合久久午夜| 国产福利不卡视频| 欧美日韩视频不卡| 日本一区二区在线不卡| 亚洲一区二区三区爽爽爽爽爽 | 亚洲高清不卡在线观看| 亚洲永久免费视频| 欧美性受xxxx| 另类人妖一区二区av| 成人99免费视频| 亚洲综合一二三区| 欧美日韩高清一区二区不卡| 亚洲靠逼com| 精品剧情v国产在线观看在线| 成人自拍视频在线观看| 亚洲精品一二三区| 精品美女一区二区| 国内精品国产三级国产a久久| 中文字幕一区在线| 国产精品一区二区91| 午夜精品一区二区三区三上悠亚| 欧美精品一区二区三区四区| 中文字幕精品—区二区四季| 日韩一区二区电影网| 经典三级在线一区| 亚洲v中文字幕| 日韩码欧中文字| 亚洲精品视频在线观看免费| 欧美色手机在线观看| 视频在线观看国产精品| 国内精品免费**视频| 18成人在线视频| 欧美老年两性高潮| 亚洲男人的天堂在线aⅴ视频| 国产酒店精品激情| 中文字幕一区二区三区在线播放| 精品久久久久久久久久久久包黑料| 国产成人精品免费在线| 久久精品国产成人一区二区三区| 91色综合久久久久婷婷| 国产精品18久久久久久久久久久久| 欧美高清视频一二三区 | 26uuu亚洲综合色欧美| 亚洲综合一区在线| 国产成人8x视频一区二区| 日韩精品一区二区三区视频在线观看 | 久久精品国产第一区二区三区| 在线观看91av| 久久精品国产精品青草| 久久久久久久久伊人| 成人av影院在线| 亚洲影视资源网| 911精品国产一区二区在线| 欧美a级一区二区| 国产蜜臀av在线一区二区三区| 不卡一区中文字幕| 午夜成人在线视频| 久久久久国产精品人| a亚洲天堂av| 男男视频亚洲欧美| 国产精品视频一二| 欧洲一区二区三区免费视频| 日韩精品一级中文字幕精品视频免费观看 | 日韩专区在线视频| 久久免费电影网| 一本色道久久综合狠狠躁的推荐| 亚洲一区二区精品视频| 欧美精品一区二区三区在线播放| 99精品欧美一区| 免费在线观看成人| 一区二区三区欧美日| 2023国产精品视频| 91精品国产综合久久精品图片 | 日韩国产欧美在线视频| 中文一区一区三区高中清不卡| 欧美性大战久久久久久久蜜臀| 国产一区二区三区精品视频| 亚洲综合免费观看高清完整版| 久久久青草青青国产亚洲免观| 欧美亚洲尤物久久| 丁香激情综合国产| 久久99久久精品欧美| 亚洲黄一区二区三区| 国产精品素人视频| 国产亚洲精品7777| 久久亚洲春色中文字幕久久久| 精品婷婷伊人一区三区三| 99精品欧美一区| 成人av网站大全| 成人综合在线网站| 成人福利视频网站| 成人精品视频一区二区三区| 国产福利电影一区二区三区| 久久99精品久久久久久久久久久久| 天天操天天干天天综合网| 午夜久久久久久电影| 一区二区三区色| 午夜久久久久久电影| 日韩制服丝袜av| 免费高清在线视频一区·| 天堂久久一区二区三区| 首页国产丝袜综合| 美腿丝袜亚洲一区| 国产一区二区h| av电影在线不卡| 欧美羞羞免费网站| 欧美一级高清大全免费观看| 欧美刺激脚交jootjob| 精品久久久久一区| 国产香蕉久久精品综合网| 亚洲图片另类小说| 日韩高清不卡一区| 国产成人在线网站| 91久久精品网| 精品国精品国产| 国产精品日韩成人| 亚洲午夜电影在线观看| 久久精品国产久精国产| 国产精品123区| 欧美自拍偷拍午夜视频| 精品国产一区二区三区av性色 | 国产不卡高清在线观看视频| 91色视频在线|