Reactjs useEffect()完成后设置状态并具有值

Reactjs useEffect()完成后设置状态并具有值,reactjs,Reactjs,这意味着如果trueformData的结果是currentStudent{name:“Alex”,class:“4”},如果false将initData状态 但当我尝试上面的代码时,结果是一个emty对象,类似于这样的{} 如何设置formDatastate=currentStudent({name:“Alex”,class:“4”})我正在更改代码。 const initData = { name: "", class: "" } con

这意味着如果true
formData
的结果是
currentStudent
{name:“Alex”,class:“4”}
,如果false将
initData
状态

但当我尝试上面的代码时,结果是一个emty对象,类似于这样的
{}


如何设置
formData
state=
currentStudent
({name:“Alex”,class:“4”})
我正在更改代码。

const initData = {
    name: "",
    class: ""
}
const [currentStudent, setCurrentStudent] = useState({});

useEffect(() => {
    // My example code to setState
    setCurrentStudent(exampleData)
    //The result of currentStudent is {name: "Alex", class: "4"}
}, []);
     
const [formData, setFormData] = useState({ condition ? currentStudent : initData });

首次渲染组件时,将应用初始值状态。在此之后,您已经设置了当前用户。它将不适用。为什么不在setState的init中设置:

const initData = {
  name: "",
  class: ""
}
const [currentStudent, setCurrentStudent] = useState({});
const [formData, setFormData] =useState({});
useEffect(() => {
  setCurrentStudent(exampleData)   // My example code to setState
                                  //The result of currentStudent is {name: "Alex", class: "4"}
  setFormData(condition ? exampleData: initData);
}, []);
或者您可以将其设置为
useffect
功能:

const [currentStudent, setCurrentStudent] = useState(exampleData);
试试这个:

setFormData(condition ? exampleData : initData);
请试试这个

const [formData, setFormData] = useState( condition ? currentStudent : initData);
它的目标是在道具发生变化时更新功能组件。
由于条件主要是通过道具设置的,因此需要将道具或条件设置为
userEffect
中的参数,如
组件将接收道具

使用效果不同步。因此,即使它是在Useffect之后调用的,交给Useffect的内部函数还没有运行。你必须在Useffect挂钩内设置所需的状态,我的意思是先声明它,然后在Useffect内更新/设置。我以前尝试过这一点,但没有完成。当我在
useffect
yes上
console.log()
时,
formData
的结果是一个空对象
{}
。确定。在
return
write
{formData}
中,可以看到什么结果?@Alex。应用
useffect
也可能是排队。这意味着,如果在调用
setFormData
后尝试读取更新状态,可能会得到错误的值。
const initData = {
  name: "",
  class: ""
}
const [currentStudent, setCurrentStudent] = useState({});
const [formData, setFormData] =useState({});
useEffect(() => {
  setCurrentStudent(exampleData)
  setFormData(condition ? exampleData: initData);
}, [condition]); // or use props variable which is used for condition value.