Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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 组件正在将文本类型的受控输入更改为非受控输入_Javascript_Html_Reactjs - Fatal编程技术网

Javascript 组件正在将文本类型的受控输入更改为非受控输入

Javascript 组件正在将文本类型的受控输入更改为非受控输入,javascript,html,reactjs,Javascript,Html,Reactjs,我收到一个错误警告,一个组件正在将文本类型的受控输入更改为非受控输入。我不太熟悉这个功能组件,因为我以前在课堂上。我所做的只是: 设置我的列表的初始状态: const [list, setList] = useState({title: ' '}) 然后使用onChange设置我的标题obj的值: const setTitle =e=> {setList(e.target.value)} 然后使用onChange获取它的值 <input type='text onChange

我收到一个错误警告,一个组件正在将文本类型的受控输入更改为非受控输入。我不太熟悉这个功能组件,因为我以前在课堂上。我所做的只是:

设置我的列表的初始状态:

const [list, setList] = 
useState({title: ' '})
然后使用onChange设置我的标题obj的值:

const setTitle =e=> 
{setList(e.target.value)}
然后使用onChange获取它的值

<input type='text onChange= 
{setTitle} value={list.title} 
palceholder="Add" />

列表状态应该是一个对象,当您在更改事件上更新状态时,将其改为字符串

更新状态,使您仅更新列表对象中处于如下状态的标题键

const setTitle =e=>  {
    const value = e.target.value; // Remember to copy value into a variable since events are cleared by react
    setList(prev=> ({...prev, title: value}));
}

你几乎是对的,但你遗漏了一些东西:

setTitle=e=>{
const title=e.target.value;
集合列表(prevState=>({…prevState,title}));
}

您是说状态是一个包含title属性的对象,因此在设置它时,您必须使用来自该值的标题来设置对象:)

为避免此类错误,安全的做法是:

<input type=text value={list} onChange={(e) => setList(e.target.value)} />
setList(e.target.value)}/>

列表不会是值,列表中的属性
title
将是值。