You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React表单初始渲染时输入框显示[object Object]而非占位符问题

问题解决:输入框初始显示[object Object]而非占位符

错误原因

在BookForm.js中,你给useState传入了BookContext作为初始值——这是一个Context对象,当React把这个对象渲染到input的value属性时,会自动将其转换为字符串[object Object],直接覆盖了占位符的显示(占位符仅在value为空时才会显示)。

修正代码

把title和author的初始state改成空字符串即可:

const BookForm = () => {
  const { dispatch } = useContext(BookContext);
  // 这里把初始值从BookContext改为空字符串''
  const [title, setTitle] = useState('');
  const [author, setAuthor] = useState('');

  const handleSubmit = (e) => {
    e.preventDefault();
    dispatch({ type: 'ADD_BOOK', book: { title, author } });
    setTitle('');
    setAuthor('');
  };
  // 剩余代码保持不变
};

补充说明

input的value属性是受控的,只要它有非空值,占位符就不会显示。你之前的初始值是Context对象,转成字符串后是非空的,所以占位符被隐藏,取而代之的是对象的字符串表示[object Object]。改成空字符串后,初始状态下value为空,占位符就能正常显示了。

内容的提问来源于stack exchange,提问作者Amir Khaleghi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:45:40