分享技术 react 子组件与父组件通信

codetyphon
82阅读20 评论2020-06-04 00:29:09
import React,{useState,useContext} from "react";
import "./styles.css";
const MyContext = React.createContext()

const Item = (props) => {
    const { update } = useContext(MyContext)
    let add=()=>{
      props.item.count+=1;
      update(props.item);
    }
    let sub=()=>{
      props.item.count-=1;
      if(props.item.count<0){
        props.item.count=0;
      }
      update(props.item);
    }
    return (
        <div>
          {props.item.title} x {props.item.count}
          <button onClick={add}>+</button>
          <button onClick={sub}>-</button>
        </div>
	)
}

const App = () => {
    const [list, setList] = useState([
      {
        title:'摩卡',
        count:2
      },
      {
        title:'美式',
        count:1
      }
    ])
    function update(item) {
      console.log(item)
      let newlist=[];
      list.map((i)=>{
        if(i==item){
          newlist.push(item);
        }else{
          newlist.push(i);
        }
      })
      setList(newlist)
    }
    
    return (
	    <MyContext.Provider value={{update}}>
    		{
        list.map((item,i)=>{
          return(
            <Item key={i} item={item} />
          )
        })
        }
    	</MyContext.Provider>
	)
}
export default App

https://codesandbox.io/s/demo-059-kgocr?file=/src/App.js

社区声明
  • 社区旨在推动自由工作方式在国内渐进式发展
  • 区别于传统方式的工作职位,将会被优先推荐
  • 真诚且有趣有用的内容分享,在这里更受欢迎
  • 我们希望这里将是互联网创意工作者的聚集区
加入组织