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