最近在学习 React ,还在 CRUD 阶段,目前遇到一个问题,没找到什么原因,还望大佬们指点一二
主要的问题就是我每次刷新页面,projects 和 users 接口都被调用了两次
嵌套结构是 <App> <ProjectListPage> </App>
以下是 ProjectListPage 组件的代码,只有这个组件有处理各种状态,其他两个组件 SeachPanel 、List 都没有状态的处理
import React, {useEffect, useState} from "react";
import {SeachPanel} from "./search-panel";
import {List} from "./list";
import {cleanObject, uesMount} from "../../utils";
import qs from "qs";
const apiUrl = 'http://localhost:3001'
export const ProjectListPage = () =>{
const [param,setParam] = useState({
name: '',
personId: ''
})
const [list,setList] = useState([])
// 当搜索内容改变的时候从新获取列表(默认会先执行一次)
useEffect(()=>{
fetch(`${apiUrl}/projects?${qs.stringify(cleanObject(param))}`).then(async (resp) => {
if (resp.ok) {
setList(await resp.json())
}
})
},[])
// option 用户状态
const [users,setUsers] = useState([])
useEffect(()=>{
fetch(`${apiUrl}/users`).then(async (resp) => {
if (resp.ok) {
setUsers(await resp.json())
}
})
},[])
return <div>
<SeachPanel users={users} param={param} setParam={setParam}/>
<List users={users} list={list}/>
</div>
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.