我希望我aysnc function对状态变化做出反应,以便它可以在状态变化时终止。我发现它对改变状态没有反应。
在提供的示例中,我正在从函数内部更改状态,但是我已经对其进行了测试并从函数外部更改了状态(单击按钮),但它也不起作用。
const [testVariable, setTestVariable] = useState(false);
useEffect(()=> {
testFunction();
}, [])
const testFunction = async () => {
await timeout(1000);
console.log("Setting test variable to: " + true);
setTestVariable(true);
await timeout(1000);
console.log("Test variable is: " + testVariable);
}
Run Code Online (Sandbox Code Playgroud)
为了这个问题,我们首先假设存在这样的实体:
export interface Event {
id: number;
date: Date;
}
Run Code Online (Sandbox Code Playgroud)
然后我们假设有具有此类端点的后端:
GET /events -> returns all events
GET /events?startDate=dateA&endDate=dateB -> returns all events between dateA and dateB
Run Code Online (Sandbox Code Playgroud)
我在前端代码中创建了包含 4 个方法(每个 CRUD 操作一个)的钩子,如下所示:
export function useEvents() {
const getEvents() = async () => {
const response = await axios.get(`events`);
return response.data;
}
const postEvent()...
const updateEvent()...
const deleteEvent()...
const query = useQuery('events', getEvents);
const postMutation = ...
const updateMutation = ...
const deleteMutation = ...
return { query, postMutation, updateMutation, deleteMutation …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个快捷方式,它将尝试自动导入未解析的类名(自动导入是指它将从列表中取出第一项,当我将鼠标悬停在它上面并按“快速修复”时出现)
我相信 Rider 在按 Alt + Enter 时会执行此操作。
概述
我的React 应用程序托管在github-pages上,PHP API托管在标准付费托管上。
这有效(GET)
当我开始开发我的应用程序时,我遇到了一个非常流行的错误,即Access to fetch at ... has been blocked by CORS policy. 我找到了一个快速修复方法,将其写header("Access-Control-Allow-Origin: *")在 PHP 的第一行中,并且它有效。然而这些是GET 请求。
这不起作用(POST)
这次我有一段代码,我必须在其中使用POST请求并需要访问它的响应。这是负责发送 post 请求的代码段:
const editEvent = async () => {
const requestOptions = {
method: 'POST',
headers: { 'Content-Type': 'application/json', },
body: JSON.stringify({ eventID: chosenEvent, courseID: courseID, groupID: groupID, time:time, date: date, description: description, typeID: typeID, password: password}),
mode: 'cors',
};
const …Run Code Online (Sandbox Code Playgroud) 我创建的<RequireAuthRoute>它只是返回其子级或导航到/login. 然而它的使用方式并不令我满意。看看这个片段:
<Route
path=''
element={
<RequireAuthRoute>
<Explorer />
</RequireAuthRoute>
}
/>
Run Code Online (Sandbox Code Playgroud)
所以是的 - 从技术上讲它是有效的,但我想做的是为<Route>组件创建包装器,所以它最终看起来像这样:
<ProtectedRoute path='' element={<Explorer/>}/>
Run Code Online (Sandbox Code Playgroud)
阻碍我的是react-router它本身,它告诉我<Router>直接孩子只能是<Route>组件。有什么解决方法吗?
我下载了 npm 包的本地副本并将其解压到桌面上。然后我就用npm install /directory/它来安装了。
我注意到,当我删除桌面目录时,应用程序说它找不到已安装的模块。经过进一步调查后,我注意到该软件包已在其中node_modules,但旁边有箭头,并且显示“符号链接”,我认为这是指向该软件包的桌面目录的链接。
如何独立安装它,以便它完全包含在 node_modules 中,从而允许我删除桌面副本?
reactjs ×4
javascript ×2
fetch-api ×1
node.js ×1
npm ×1
npm-install ×1
npm-package ×1
php ×1
react-query ×1
react-router ×1