【发布时间】:2020-10-19 12:18:53
【问题描述】:
我有以下代码。按下按钮时,预期的行为是重新创建 AxiosInstance 并更新状态。但实际上,实例会被重新创建,然后在某处执行。
function createApi(): AxiosInstance {
const api = axios.create();
// ...
return api;
}
function App() {
const [api, setApi] = React.useState<AxiosInstance>(() => createApi());
const resetApi = () => {
setApi(createApi());
};
console.log(api);
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<button onClick={resetApi}>Reset API</button>
</div>
);
}
Typescript 没有错误,setApi 在我的 IDE 中有如下签名:
React.Dispatch<React.SetStateAction<AxiosInstance>>
这将被评估为如下内容:
(value: AxiosInstance) => void
这正是我在第一个代码 sn-p 中所做的,为什么它不起作用?
【问题讨论】:
标签: reactjs typescript react-hooks