Javascript 非受控输入(控制台错误)

Javascript 非受控输入(控制台错误),javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,警告:组件正在更改要控制的文本类型的非受控输入。输入元件不应从非受控切换到受控(反之亦然)。在组件的使用寿命内,决定使用受控或非受控输入元件 import React,{useffect,useState}来自“React”; 从“axios”导入axios 从“反应日期选择器”导入日期选择器; 导入“react datepicker/dist/react datepicker.css”; 函数CreateExercise(){ const[createExercises,setExercis

警告:组件正在更改要控制的文本类型的非受控输入。输入元件不应从非受控切换到受控(反之亦然)。在组件的使用寿命内,决定使用受控或非受控输入元件

import React,{useffect,useState}来自“React”;
从“axios”导入axios
从“反应日期选择器”导入日期选择器;
导入“react datepicker/dist/react datepicker.css”;
函数CreateExercise(){
const[createExercises,setExercise]=useState({
用户名:“”,
说明:“,
持续时间:0,
日期:新日期(),
用户:[]
});
useffect(()=>{
axios.get()http://localhost:5000/users/')
。然后(响应=>{
如果(response.data.length>0){
排练({
用户:response.data.map(user=>user.username),
用户名:响应。数据[0]。用户名
})
}
})
}, [])
函数句柄更改(事件){
常量{name,value}=event.target;
setExercise(prevExercise=>{
返回{
…在演习之前,
[名称]:值
};
});
}
功能更改日期(日期){
setExercise(prevExercise=>{
返回{
用户名:prevExercise.username,
description:prevExercise.description,
持续时间:prevExercise.duration,
日期:日期:,
用户:prevExercise.users
};
});
}
提交函数(事件){
event.preventDefault();
console.log(createExercises);
轴心柱http://localhost:5000/exercises/add",练习)
。然后(res=>console.log(res.data));
排练({
用户名:“”,
说明:“,
持续时间:0,
日期:新日期(),
用户:[]
});
window.location='/';
}
返回(
创建新的练习日志
用户名:
{
createExercises.users.map(函数(用户,索引){
返回{user};
})
}
说明:
持续时间(分钟):
日期:
创建练习日志
);
}

导出默认值我认为您的问题在于您的效果,尤其是在您使用
设置练习的方式上,当您执行以下操作时:

setExercise({
                    users: response.data.map(user => user.username),
                    username: response.data[0].username
                })
它不会将新数据与以前的状态“合并”(分配),它所做的只是设置状态,这意味着在此之后您的状态对象将是:

{ users:[], username:''}
因此,实际上会丢失
说明
和其他字段,因此会出现警告

你应该做的是:

setExercise((prevState) => ({
                    ...prevState,
                    users: response.data.map(user => user.username),
                    username: response.data[0].username
                }))

我认为您的问题在于您的效果,尤其是在您使用
setExercise
时:

setExercise({
                    users: response.data.map(user => user.username),
                    username: response.data[0].username
                })
它不会将新数据与以前的状态“合并”(分配),它所做的只是设置状态,这意味着在此之后您的状态对象将是:

{ users:[], username:''}
因此,实际上会丢失
说明
和其他字段,因此会出现警告

你应该做的是:

setExercise((prevState) => ({
                    ...prevState,
                    users: response.data.map(user => user.username),
                    username: response.data[0].username
                }))

代码段第12行出现错误,看起来问题在于在
useState()
中指定
new Date()
。请举一个简单的例子,然后我将存储什么,这样它就不会被未定义?请帮个忙。。。使用像
react query
这样的库,您将永远不会遇到这种类型的问题。代码段第12行出现错误,看起来在
useState()
中指定
new Date()
是个问题。请举一个简单的例子,然后我将存储什么,这样它就不会未定义?请帮自己一个忙。。。使用像
react query
这样的库,您将永远不会遇到这种类型的问题。执行此错误后非常感谢。但我无法从选项更改用户名。因为您的选择没有名称属性(属性)您的handleChange取决于它hanks许多小错误将在下次处理..非常感谢在执行此错误后消失..但我无法从options更改我的用户名。因为您的select没有name属性(属性),并且您的handleChange取决于它hanks很多小错误将在下次处理。。