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
将是值。