useContext — это контекст
Что такое контекст?
глобальная переменнаяявляется глобальнымконтекст, он доступен глобально; контекст — это вашЗапустите фрагмент кода, который вы хотите знать все переменные
Методы, используемые useContext
1. Сначала создайте createContext
Создайте и инициализируйте с помощью createContext
const C = createContext(null);
2. Поставщик указывает область использования
В очерченном диапазоне передайте операции чтения и записи объектов операции, а затем вы можете использовать контекст
<C.Provider value={{n,setN}}>
这是爷爷
<Baba></Baba>
</C.Provider>
3. Наконец, используйте useContext
Используйте useContext для принятия контекста, поскольку объект передается, объект также должен быть принят
const {n,setN} = useContext(C);
кейс
кейс: Используйте переменную n, определенную в родительском компоненте во внучатом компоненте, и выполните операцию +1.
import React, { createContext, useContext, useReducer, useState } from 'react'
import ReactDOM from 'react-dom'
// 创造一个上下文
const C = createContext(null);
function App(){
const [n,setN] = useState(0)
return(
// 指定上下文使用范围,使用provider,并传入读数据和写入据
<C.Provider value={{n,setN}}>
这是爷爷
<Baba></Baba>
</C.Provider>
)
}
function Baba(){
return(
<div>
这是爸爸
<Child></Child>
</div>
)
}
function Child(){
// 使用上下文,因为传入的是对象,则接受也应该是对象
const {n,setN} = useContext(C)
const add=()=>{
setN(n=>n+1)
};
return(
<div>
这是儿子:n:{n}
<button onClick={add}>+1</button>
</div>
)
}
ReactDOM.render(<App />,document.getElementById('root'));
Уведомление
При использовании useContext для изменения фрагмента данных он ищет и сравнивает измененные данные уровень за уровнем, а затем отображает их, а не отслеживает переменные посредством реагирования на данные.
То есть после нажатия на операцию +1 React начинает выполнять код из функции App.
А Vue3 использует реакцию на данные для мониторинга переменных.Пока переменные изменяются, данные будут изменены, а код не будет выполняться повторно.