日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

react如何在父组件中调用子组件事件

發布時間:2024/9/27 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 react如何在父组件中调用子组件事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

父組件是如何使用子組件的事件的,下邊數值累加的例子

類組件

將子組件的this傳到父組件,給父組件添加一個屬性,值為this,之后就可以通過父組件的屬性調用子組件的事件了

import React,{Component} from 'react';// 這是子組件 class A extends Component{componentDidMount() {this.props.fn(this)}state = {count:1}render() {let { count } = this.state;return (<div>子組件的值: {count}</div>)} }// 這是父組件class B extends Component{// 這個事件是為了拿到子組件的thisfn_getThis = (_this) => {this.$child=_this}// 已經擁有子組件this,可以隨意調用子組件事件了increment = () => {this.$child.setState(state => {return {count:state.count+1}}) }render() {return (<div><A fn={this.fn_getThis} /><button onClick={()=>{this.increment()}}>父組件的按鈕</button></div>)} } export default B;

函數組件

useRef,useImperativeHandle ,forwardRef 3個api的配合使用

useImperativeHandle:可以讓你在使用 ref 時自定義暴露給父組件的實例值。在大多數情況下,應當避免使用 ref 這樣的命令式代碼。useImperativeHandle 應當與 forwardRef 一起使用。語法: useImperativeHandle(ref, createHandle, [deps]) forwardRef:一個函數,返回一個擁有第二個參數的組件 import React,{useRef,useImperativeHandle ,forwardRef,useState} from 'react';// 這是子組件 const A = (props,ref) => {let [count, setCount] = useState(0)useImperativeHandle(ref, () => {return {imcrement:() => {setCount(value => {return value + 1})} }})return (<div>{count}</div>) }const NewA = forwardRef(A)// 這是子組件 const B = () => {let refA = useRef();const fn_sonImcrement = () => {refA.current.imcrement()}return(<div><NewA ref={refA} /><button onClick={()=>{fn_sonImcrement()}}>按鈕</button></div>) }export default B;

總結

以上是生活随笔為你收集整理的react如何在父组件中调用子组件事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。