最近在学习 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>
}