使用TypeScript編寫的React Context提供者
P粉714780768
P粉714780768 2024-03-28 22:28:44
0
1
456

我是 React context 和 TypeScript 的新手,我正在嘗試編寫 context 來開啟和關閉側邊欄。這是我的程式碼

import React, { createContext, useContext, ReactNode, SetStateAction, Dispatch } from "react";



interface StateContextType {
    activeMenu: boolean
    setActiveMenu: Dispatch<SetStateAction<boolean>>;
}

export const StateContext = createContext<StateContextType>({
    activeMenu: true,
    setActiveMenu: () => {}
});



type ContextProviderProps = {
    children?: ReactNode
}

export const ContextProvider = ({ children }: ContextProviderProps) => {
    
    return (
        <StateContext.Provider
            value={{ activeMenu: true, setActiveMenu: () => { } }}
        >
            {children}
        </StateContext.Provider>
    )
}

export const useStateContext = () => useContext(StateContext)

當我嘗試在應用程式中使用上下文時,布林值「activeMenu」工作正常,這表示側邊欄根據其值顯示。因為我將其預設值設為true,所以會顯示側邊欄,當我從上下文提供者手動更改它時,它會關閉側邊欄,但這裡的問題是設定器函數「setActiveMenu」根本不起作用。正如我所說,我對反應上下文和打字稿都是新手,我的控制台中沒有顯示錯誤,而且我不知道為什麼會發生這種情況。

P粉714780768
P粉714780768

全部回覆(1)
P粉727531237

您不會將您的狀態儲存在任何地方,並且您的上下文需要一些支援。嘗試一下

export const ContextProvider = ({ children }: ContextProviderProps) => {
    const [activeMenu, setActiveMenu] = useState(true);

    return (
        
            {children}
        
    )
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板