react在父组件中操作子组件中的方法

//这个写法适用于保存/取消按钮在父组件中而表单内容在子组件,编辑/修改完之后在父组件点击保存/取消表单的内容。并且,子组件要是类组件,不能是函数组件

</*-----------------------------------------------------------*/>

// 父组件

this.state = {

  refMethod : null;   // 也可以在全局let refMethod = null 

}

handleRef = (ref: any) => { // 函数(hooks)写法为    const   handleRef   = (ref: any) => {  refMethod = ref;  }
  this.setState({  refMethod: ref  })
}
changeChild = () => { //这里的changeChild()是父组件里的方法,例如保存/取消
  refMethod?.handleSave?.()  //  ?.   是为了判断  refMethod  下面有没有  handleSave  可以理解为  if(refMethod){ handleSave() }
}
 
//html
return (
  <Childer ref={handleRef} ></Childer>
)
 
</*--------------------------------下面是子组件-----------------------------------------*/>
 
//在子组件的props中定义父组件中的ref
interface ChilderProps {    //  这里为ts写法
  ref: (ref: any) => void;
}
 
class ChilderComponents extends React.Component<ChilderProps, ChilderState> {
  constructor(props: any) {
    super(props)
    this.state = {
   }
  }
  componentDidMount = () => {
    this.props.ref?.(ChilderComponents);     //把整个子组件赋值给  ref  就可以在父组件中操作子组件的方法了
  }
}
posted @ 2023-02-14 14:58  就这样,  阅读(285)  评论(0编辑  收藏  举报