gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

React父組件怎么調用子組件的方法

調用方法:1、類組件中的調用可以利用React.createRef()、ref的函數式聲明或props自定義onRef屬性來實現;2、函數組件、Hook組件中的調用可以利用useImperativeHandle或forwardRef拋出子組件ref來實現。

React父組件怎么調用子組件的方法

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

在React中,我們經常在子組件中調用父組件的方法,一般用props回調即可。但是有時候也需要在父組件中調用子組件的方法,通過這種方法實現高內聚。有多種方法,請按需服用。

類組件中


1、React.createRef()

  • 優點:通俗易懂,用ref指向。

  • 缺點:使用了HOC的子組件不可用,無法指向真是子組件

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

import React, { Component } from 'react';  class Sub extends Component {   callback() {     console.log('執行回調');   }   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的函數式聲明

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

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

...  <Sub ref={ref => this.sub = ref}></Sub>  ...
登錄后復制

3、使用props自定義onRef屬性

  • 優點:假如子組件是嵌套了HOC,也可以指向真實子組件。
  • 缺點:需要自定義props屬性

import React, { Component } from 'react'; import { observer } from 'mobx-react'  @observer class Sub extends Component { 	componentDidMount(){     // 將子組件指向父組件的變量 		this.props.onRef && this.props.onRef(this); 	} 	callback(){ 		console.log("執行我") 	} 	render(){ 		return (<div>子組件</div>); 	} }  class Super extends Component { 	handleOnClick(){        // 可以調用子組件方法 		this.Sub.callback(); 	} 	render(){ 		return (           <div> 			<div onClick={this.handleOnClick}>click</div> 			<Sub onRef={ node => this.Sub = node }></Sub>	 	   	  </div>) 	} }
登錄后復制

函數組件、Hook組件


1、useImperativeHandle

  • 優點: 1、寫法簡單易懂 2、假如子組件嵌套了HOC,也可以指向真實子組件
  • 缺點: 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('執行我');   }   return <div>子組件</div>; });  export default Parent;
登錄后復制

2、forwardRef

使用forwardRef拋出子組件的ref

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

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()}       >父組件調用子組件的 focus</button>     </div>   ) }  export default App;
登錄后復制

總結

父組件調子組件函數有兩種情況

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

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
狠狠热免费视频| 911福利视频| 特色特色大片在线| www.天天射.com| 久久久久免费精品| 成人观看免费完整观看| 成人性免费视频| 黄色一级片播放| 99草草国产熟女视频在线| 秋霞无码一区二区| av网站在线观看不卡| 日韩少妇内射免费播放18禁裸乳| 北条麻妃亚洲一区| 天天操天天干天天做| 第一区免费在线观看| 亚洲国产午夜精品| 国产乱子伦精品视频| 妞干网在线观看视频| 亚洲国产精品女人| 国产xxxx振车| 37pao成人国产永久免费视频| 国产精品沙发午睡系列| www.中文字幕在线| 亚洲精品久久久久久宅男| 亚洲美女性囗交| 成年人视频大全| 久草精品在线播放| www.桃色.com| 国产aaa免费视频| 999精彩视频| 伊人久久在线观看| 国产精品无码av无码| 911av视频| 91视频 -- 69xx| 亚洲综合123| 一区二区传媒有限公司| 久久婷五月综合| 日本福利视频一区| 五月婷婷六月合| 日韩欧美国产综合在线| 亚洲精品成人在线播放| 国产91在线视频观看| 日韩av.com| 青青青国产在线视频| 777久久精品一区二区三区无码 | 青青草原国产免费| 免费在线观看亚洲视频 | 91看片淫黄大片91| 免费看国产曰批40分钟| 性欧美在线视频| 国产成人久久777777| 成人在线免费观看网址| 污污的网站18| 无码人妻丰满熟妇区五十路百度| 久久综合久久久久| 在线观看免费不卡av| 国产极品尤物在线| 日本黄大片在线观看| 偷拍盗摄高潮叫床对白清晰| 国产精品涩涩涩视频网站| 国产美女主播在线播放 | 激情五月俺来也| 亚洲中文字幕无码不卡电影| 国产妇女馒头高清泬20p多| 咪咪色在线视频| 婷婷视频在线播放| 成人不卡免费视频| 特黄视频免费观看| 久久6免费视频| 深爱五月综合网| 日本一区二区免费高清视频| 午夜免费看毛片| 五月天六月丁香| 五月天婷婷在线观看视频| 亚洲色图偷拍视频| 亚洲最大天堂网| 一级日本黄色片| 久久久天堂国产精品| 男人天堂av片| 日本一本二本在线观看| www.欧美日本| www激情五月| 国产一区二区三区在线免费| 人妻少妇精品久久| 免费高清在线观看免费| 日本久久久久久久久久久久| www.久久久精品| 成人在线免费观看视频网站| 免费看欧美黑人毛片| 成人免费无码av| 久久综合在线观看| 免费观看亚洲视频| 黄色一级大片在线观看| 国产日韩欧美久久| 国产欧美精品aaaaaa片| 国产三区在线视频| 日韩不卡的av| 国产男女在线观看| 日韩视频在线免费播放| 成人免费在线小视频| 91pony九色| 69堂免费视频| 欧美 日韩 国产 在线观看| 欧美精品久久久久久久免费| 中文字幕精品一区二区三区在线| 91香蕉视频免费看| 男人揉女人奶房视频60分| 污色网站在线观看| 国产白丝袜美女久久久久| 欧美日韩在线成人| 国产精品无码电影在线观看| 久久婷婷国产91天堂综合精品| 麻豆tv在线播放| 国产精品嫩草影视| 999香蕉视频| 久久艹国产精品| 亚洲一区二区三区观看| 国产极品尤物在线| 久久久天堂国产精品| 日韩精品aaa| 超碰在线公开97| 国产美女三级视频| 日韩欧美视频网站| avove在线观看| 国产一级免费大片| 免费涩涩18网站入口| 国产成人精品无码播放| 成人免费在线网| 欧美另类videosbestsex日本| 伊人网在线免费| 国内av免费观看| 欧美h视频在线观看| 欧美又黄又嫩大片a级| 日韩爱爱小视频| 美女网站色免费| 日韩在线一区视频| 日韩手机在线观看视频| 成人性做爰aaa片免费看不忠| 久久精品免费一区二区| 丰满少妇大力进入| 男人添女人下部高潮视频在观看| 免费日韩中文字幕| 能在线观看的av网站| 欧美精品成人网| 欧洲熟妇精品视频| 欧美伦理片在线观看| 中国黄色片一级| 欧美三级午夜理伦三级老人| 97在线免费视频观看| 69sex久久精品国产麻豆| 欧美女人性生活视频| 无码无遮挡又大又爽又黄的视频| 成人黄色一级大片| 无码人妻精品一区二区三区99v| 韩国无码av片在线观看网站| 成年人看的毛片| www黄色av| 四虎成人在线播放| 老太脱裤让老头玩ⅹxxxx| 女人天堂av手机在线| a在线观看免费视频| 中文字幕在线视频精品| 久久这里只有精品8| 成人毛片视频网站| 污污的视频免费观看| 成人性生活视频免费看| 国产三级国产精品国产专区50| 少妇人妻无码专区视频| 国产免费999| 免费极品av一视觉盛宴| 日本男人操女人| 麻豆视频传媒入口| 免费在线激情视频| 伊人五月天婷婷| 99精品在线免费视频| aaa一级黄色片| 人妻av中文系列| 国内精品国产三级国产aⅴ久| 色婷婷一区二区三区av免费看| 妞干网在线视频观看| 国产在线观看中文字幕| 毛片在线视频播放| 不卡中文字幕在线| 天天爽人人爽夜夜爽| 男女超爽视频免费播放| 中文字幕の友人北条麻妃| 妓院一钑片免看黄大片| 丁香花在线影院观看在线播放| 91网址在线观看精品| 中文字幕一区二区三区四区在线视频| 黄色一级片国产| 午夜啪啪免费视频| 成年网站在线播放| 男人操女人免费软件| 国产v片免费观看| 四虎影院一区二区| www.成人黄色| 女人高潮一级片| 久久久久久久久久久久久久久国产| 天堂在线中文在线|