[英]React - typescript TypeScript error: This expression is not callable
[英]React Typescript hook error - This expression is not callable
我有這個問題,因為我將代碼從 React Javascript 移動到 React Typescript
我有一個簡單的鈎子,可以將 state 從開/關(或真假)切換(下面的代碼)我正在努力解決這個問題,因為此代碼正在處理 Javascript
所以切換 function 有一些錯誤,但無法弄清楚。 一些幫助將不勝感激
// useToggle.tsx
import { useState } from "react";
export const useToggle = (initialMode = false) => {
const [open, setOpen] = useState(initialMode);
const toggle = () => setOpen(!open);
return [open, setOpen, toggle];
};
我的開關組件
// Switch.tsx
import { useToggle } from "./useToggle";
import React from "react";
export const Switch = () => {
const [open, toggle] = useToggle();
const [open2, toggle2] = useToggle();
return (
<>
<p>Testing toggle 1: {`${open}`}</p>
<p>Testing toggle 2: {`${open2}`}</p>
<button
onClick={() => {
toggle();
}}
>
Toggle 1
</button>
<button
onClick={() => {
toggle2();
}}
>
Toggle 2
</button>
</>
);
};
現在我使用我的開關組件
// App.tsx
import * as React from "react";
import "./styles.css";
import { Switch } from "./Switch";
export default function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<Switch />
</div>
);
}
你需要做兩個改變來解決這個問題
首先,要擺脫錯誤,您需要使用const assertion
返回值,例如
return [open, toggle, setOpen] as const;
其次,您在破壞時使用切換作為第二個參數,因此您也需要將其作為第二個參數返回
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.