Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript REACTjs |在选择选项TypeError时获取此信息:state.users未定义_Javascript_Reactjs_React Router_Axios_Web Development Server - Fatal编程技术网

Javascript REACTjs |在选择选项TypeError时获取此信息:state.users未定义

Javascript REACTjs |在选择选项TypeError时获取此信息:state.users未定义,javascript,reactjs,react-router,axios,web-development-server,Javascript,Reactjs,React Router,Axios,Web Development Server,我正在尝试使用react to my database发布数据,但当我选择从axios获取选项时,我会得到一个错误状态。如果用户未定义,我还会收到一个警告,提示 警告:组件正在将受控输入更改为非受控输入。这可能是由值从已定义更改为未定义引起的,这是不应该发生的 import React,{useState,useffect,useRef}来自“React”; 导入“../../node_modules/bootstrap/dist/css/bootstrap.min.css”; 从“反应日期选择

我正在尝试使用react to my database发布数据,但当我选择从axios获取选项时,我会得到一个错误状态。如果用户未定义,我还会收到一个警告,提示

警告:组件正在将受控输入更改为非受控输入。这可能是由值从已定义更改为未定义引起的,这是不应该发生的

import React,{useState,useffect,useRef}来自“React”;
导入“../../node_modules/bootstrap/dist/css/bootstrap.min.css”;
从“反应日期选择器”导入日期选择器;
导入“react datepicker/dist/react datepicker.css”;
从“axios”导入axios;
const CreateExercise=()=>{
常量[状态,设置状态]=使用状态({
用户名:“”,
说明:“,
持续时间:0,
日期:新日期(),
用户:[],
});
const onChangeUsername=(e)=>{
设定状态({
用户名:e.target.value,
});
};
const onchangescription=(e)=>{
设定状态({
说明:即目标值,
});};
const onChangeDuration=(e)=>{
设定状态({
持续时间:即目标值,
});};
const onChangeDate=(日期)=>{
设定状态({
日期:日期:,
}); };
console.log(reff.current)
const onSubmit=(e)=>{
e、 预防默认值();
常量练习={
用户名:state.username,
description:state.description,
持续时间:state.duration,
日期:state.date,};
axios.post(“http://localhost:8000/exercise/add,练习)。然后((doc)=>{
console.log(doc.data);});};
useffect(()=>{
axios.get(“http://localhost:8000/users)然后((doc)=>{
如果(doc.data.length>0){
设定状态({
用户:doc.data.map((用户)=>user.username),
用户名:doc.data[1]。用户名,
}); } }); },[]);
返回(
创建新的练习日志
用户名:
{state.users.map(函数(用户)){
报税表(
{user}
);   })}  
说明:
持续时间(分钟):
日期:

);}; 导出默认值;
在钩子上更改状态不同于在以前基于类的组件上更改状态,
setState({myKey:Myvalue})
将为您完成繁重的工作,并且只更新
myKey
属性。对于钩子,当您的状态是一个对象时,不会发生这种情况。这意味着所有其他键都将丢失,因此
未定义

为避免此情况,您可以将函数传递给setState,其中其参数为currentState,并执行以下操作:

 setState(prevState => ({
  ...prevState,
  myKey: myValue,
}))

将console.log放在
如果(doc.data.length>0)
,你会得到什么吗?是的,我会在数组中得到结果:数组(3)[{…},{…},{…},{…}]好,让我们试试吧,谢谢
 setState(prevState => ({
  ...prevState,
  myKey: myValue,
}))