當我嘗試在自定義掛鉤中使用函式時,會發生以下錯誤:
未捕獲的型別錯誤:tglCartao 不是函式
我在 UseCartao.tsx 的自定義鉤子:
export interface ICartaoContext {
idToggleKey : string;
setIdToggleKey? : any;
arrayCartoes : Array<any>;
setArrayCartoes?: any;
tglCartao?:(numeroCartao: string) => void;
};
const defaultValue = {
idToggleKey : '1',
arrayCartoes : [
{
NR_CARTAO: 1,
INVALIDO: false,
SELECIONADOS: []
},
]
};
const CartaoContext = createContext<ICartaoContext>(defaultValue);
export const CartaoProvider: FC<any> = ({ children } : any) => {
const Cartao = UseCartaoProvider();
return <CartaoContext.Provider value={{...Cartao}}>{children}</CartaoContext.Provider>;
};
export const useCartao = () => {
return useContext(CartaoContext);
};
const UseCartaoProvider = () => {
const [idToggleKey, setIdToggleKey] = useState<string>('1');
const [arrayCartoes, setArrayCartoes] = useState<Array<any>>(
[
{
NR_CARTAO: 1,
INVALIDO: false,
SELECIONADOS: []
},
]
);
const tglCartao = useCallback((numeroCartao: string) : void => {
setIdToggleKey(numeroCartao);
}, [setIdToggleKey]);
return ({
idToggleKey,
arrayCartoes,
tglCartao: tglCartao,
})
}
export default useCartao;
我在 index.tsx 中呼叫函式 tglCartao 的按鈕:
onClick={() => tglCartao!(idToggleKey === item.NR_CARTAO ? '0' : item.NR_CARTAO)}
是的,我所有的 index.tsx 回傳碼都在里面<CartaoProvider> </CartaoProvider>
uj5u.com熱心網友回復:
也許CartaoProvider你的按鈕在同一級別使用,確保你不要像下面這樣呼叫它
前任
const tglCartao = useHookFromContext() //your context from CartaoProvider
<CartaoProvider>
</CartaoProvider>
因為您甚至可以在將背景關系包裝在 Provider 之前呼叫它
正確方式EX
<CartaoProvider>
<Child/>
</CartaoProvider>
const Child = () => {
const tglCartao = useHookFromContext() //your context from CartaoProvider
....
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/479146.html
下一篇:如何更改物件屬性值打字稿?
