React父子组件传值

165 阅读1分钟

父组件向子组件传值

父组件向子组件传值 也是通过 props 来传,在子组件中用 this.props.xx 接收父组件传来的值

function Fa() {
   const [num, setNum] = useState(0)
  return (
    <div>
      <h1>这是父组件</h1>
      <Son num={num}></Son>
    </div>);
}
export default Fa;

function Son(props) {
  return (
    <div>
      <h1>这是子组件</h1>
      <div>这里是父组件传来的值:{props.num}</div>
    </div>);
}
export default Son;

子组件向父组件传值

通过事件传递+callback

function Fa() {
  const [num, setNum] = useState(0)
  const [faData, setFaData] = useState({ name: 'Lucy' })
  const callBack = (data) => {
    setFaData(data)
  }
  return (
    <div>
      <h1>这是父组件</h1>
      <Son num={num} callBack={callBack}></Son>
      <div>这里接收子组件传的值:{faData?.name}</div>
    </div>);
}
export default Fa;
function Son(props) {
    const [sonData, setSonData] = useState({ name: 'lily' })
    const sendToFa = () => {
        props.callBack(sonData)
    }
    return (
        <div>
            <h1>这是子组件</h1>
            <div>这里是父组件传来的值:{props.num}</div>
            <Button onClick={sendToFa}>父向子传值</Button>
        </div>);
}
export default Son;

父组件调用子组件方法

使用props自定义onRef属性

//Fa
<div>
 <Button onClick={()=>this.childRef.search}></Button>
 <Son onRef={ref => this.childRef = ref}> </Son>
</div>
//Son
componentDidMount() {
//将子组件指向父组件的变量
     this.props.onRef && this.props.onRef(this)
};
search(){}