const TextContext = React.createContext()
const Parent = () => (
// value 每次都接受一个新的对象
<TestContext.Provider value={{ name: "test" }}>
<Child />
</TestContext.Provider>
)
const Child = () => (
<TestContext.Consumer>{({ name }) => <p>{name}</p>}</TestContext.Consumer>
)
In this example, the TestContext.Provider.value in the Parent component accepts a new object each time, which is determined to be update during the diff process This will cause TestContext.Consumer in the Child component to re-render. two。 Solution:
const Parent = () => {
const valueRef = useRef({ name: "test" })
return (
<TestContext.Provider value={ref.current}>
<Child />
</TestContext.Provider>
)
}
For information about why you can use ref here, you can refer to: Why can ref keep references