javascript - 当输入位于无状态功能组件中时,单击提交按钮时可以将输入框的值设置为空字符串吗?

标签 javascript reactjs

点击“添加”按钮后,如何清除 Admin 函数中输入的值?我应该使用另一个基于类的组件而不是功能组件吗?

我已将其中一个输入框的值设置为:value={props.item},并在 this.setState 中将 item 的值更新为 item:""。

  AddInfo(info){
    let s = this.state.products;
    let obj ={name:""};
    obj.name=info.productName;

    s.push(obj);

    this.setState({
      products:s,
      item:"" //Here i set the value of item equal to an empty string.
    })
    console.log(this.state.products);
  }



function Admin(props){

    let productName="";

    return (
        <div>            
            <input type="text" required placeholder="Product Name" onChange={(e)=>{productName=e.target.value}} value={props.item}></input><br/>

   <button type="Submit" onClick{(e)=>props.AddInfo({productName})}>Add</button>
     </div>
    )
}

最佳答案

您必须将输入保存在输入函数的本地状态中:

 AddInfo(info){
    let s = this.state.products;
    let obj ={name:""};
    obj.name=info.productName;

    s.push(obj);

    this.setState({
      products:s,
    })
    console.log(this.state.products);
    }



function Admin(props){

    const [productName, setProductName] = useState('');

    return (
        <div>            
            <input type="text" required placeholder="Product Name" onChange={(e)=> setProductName(e.target.value) value={productName}></input><br/>
   <button type="Submit" onClick{(e)=> {props.AddInfo({productName}); setProductName('')}}>Add</button>
 </div>
)
}

这对您有用,因为您不再改变 ProductName 变量,但现在您将其保存在该输入函数的本地状态中。

希望这有帮助!

关于javascript - 当输入位于无状态功能组件中时,单击提交按钮时可以将输入框的值设置为空字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57429655/

相关文章:

javascript - 获取缩放图像的原始大小

javascript - React渲染空

javascript - 如何在 typescript 项目中导入js文件?

javascript - 谷歌脚本: Create Datepicker for Date Input

javascript - C#.NET : Server is not able to validate Angular Client [IdentityServer]

javascript - jQuery隐藏最近(“div”)不起作用

javascript - 使用 Javascript 在 IE6 中打开 "maximized"窗口?

javascript - 如何在 javascript 中从 json 中获取行或单元格?

ReactJS - 在为新行输入数据时,如何将单元格文本包装在 MaterialTable 中?

reactjs - Webpack 多个 CSS 加载器