import React,{ useState, useContext } from 'react';
import CountContext from './CountContext';
export default function ComponentA() {
const [param, setParam] = useState(1);
// 引入全局共享对象,获取全局变量count,以及修改count对应的dispatch
//⑤在子组件中用 useContext 获取全局变量;
const countContext = useContext(CountContext)
const inputChangeHandler = (eve) => {
setParam(eve.target.value)
}
const doHandler = () => {
//若想修改全局count,先获取count对应的修改抛出事件对象dispatch,然后通过dispatch将修改内容抛出
//抛出的修改内容为:{type:'add',param:xxx},即告诉count的修改事件处理函数,本次修改的类型为add,参数是param
//这里的add和param完全是根据自己实际需求自己定义的
// ⑥在子组件中用 xxContext.dispatch 去抛出修改xx的事件,携带修改事件类型和参数;
countContext.dispatch({type:'add',param:Number(param)});
}
const resetHandler = () => {
//⑥在子组件中用 xxContext.dispatch 去抛出修改xx的事件,携带修改事件类型和参数;
countContext.dispatch({type:'reset'});
}
return <div>
ComponentA - count={countContext.count}
<input type='number' value={param} onChange={inputChangeHandler} />
<button onClick={doHandler}>add {param}</button>
<button onClick={resetHandler}>reset</button>
</div>
}