react hooks 父传子,子传父
一、子传父
父组件中:
import React,{useState } from "react";
import HeXiaoDialog from "../components/hexiaoDialog"; //引入的子组件
function ShuoMing(props){
let [flag , setFlag] = useState(false)
const getFlag =()=>{
setFlag(true)
}
return (
<div style={{marginTop:'30px'}}>
<div style={{marginBottom:'30px'}}>这里是父组件的地方
<button style={{marginLeft:'20px'}} onClick={()=>{getFlag()}}>点击出现子组件</button>
</div>
{
flag? <HeXiaoDialog setFlag={setFlag}></HeXiaoDialog>: <></>
}
</div>
)
}
export default ShuoMing;
子组件中:
import React from 'react';
function heXiaoDialog(props){
const {setFlag} = props;
return (
<div>
<div>这里是内容区域</div>
<div>这里是内容区域</div>
<div>这里是内容区域</div>
<div>这里是内容区域</div>
<button onClick={()=>{setFlag(false)}}>关闭子组件</button>
</div>
)
}
export default heXiaoDialog;
二、父组件传值给子组件
父组件中:
import React,{useState ,useEffect} from "react"; import HeXiaoDialog from "../components/hexiaoDialog"; function ShuoMing(props){ let [flag , setFlag] = useState(false) let [list ,setList] = useState([]) let [data , setData] = useState({}) //要传给 子组件的数据 useEffect(() => { let data = {id:12,list:[{type:'哈哈', id:1},{type:'嘻嘻', id:2},{type:'呵呵', id:3}]} setData(data) setList([ {title: '标题一:中国您好',id:1}, {title: '标题二:世界您好',id:2}, {title: '标题三:公司您好',id:3} ]) }, []) const getFlag =()=>{ setFlag(true) } return ( <div style={{marginTop:'30px'}}> { list.map(item=>{ return ( <div key={item.id} style={{marginBottom:'30px'}}>{item.title}</div> ) }) } <button style={{marginLeft:'20px'}} onClick={()=>{getFlag()}}>点击出现子组件</button> { flag? <HeXiaoDialog setFlag={setFlag} setData={data} ></HeXiaoDialog>: <></> } </div> ) } export default ShuoMing;
子组件中:
import React from 'react'; function heXiaoDialog(props){ const {setFlag , setData } = props; return ( <div> { setData.list.map(item=>{ return ( <div key={item.id}>{item.type}</div> ) }) } <button onClick={()=>{setFlag(false)}}>关闭子组件</button> </div> ) } export default heXiaoDialog;