在学习 React Hook 的时候,遇到了 子组件 需要触发 父组件 的方法的问题.
网上百度了一遍, 都是说的用 useContext 做上下文传递, 但是很多例子都是写在同一个页面上的,而我这边已经拆分成了几个不同的组件文件,用的时候发现报错。
百度了一下,没有找到具体的解决办法.后面根据报错信息,修改后发现原来要这样写, 发现自己真的太菜了
父组件:
import React, { useState, createContext } from 'react' import Counter from './Counter' export const countContext = createContext() export default function Example4() { const [count, setCount] = useState(0) return ( <div> <p>你点击了{count}次</p> <button onClick={()=>{setCount(count+1)}}>点击</button> <countContext.Provider value={count}> <Counter /> </countContext.Provider> </div> ) }
子组件:
import React, { useContext } from 'react' import { countContext } from './Example4' function Counter() { let count = useContext(countContext) return ( <div> <h2>{count}</h2> </div> ) } export default Counter
基本就是这个套路,感觉这个useContext确实好用,起码跨级传递数据不用那么麻烦了,或者直接在 App 入口处给传递一下用户的信息,那页面的所有组件都可以调用到登陆时候的用户信息了,不用redux去存取