javascript - 提交后将下拉列表恢复为默认选项

标签 javascript reactjs

我有一个包含几个字段的下拉列表,用于更新数据库中的条目。但是,当我单击提交以使下拉列表返回到初始默认状态时,我遇到了问题。

这是下拉菜单


<select className="select--field" name="products" onChange={(e) => {handleChange(e)}}>
    <option value={null}>Please select a product</option>
    {data.products.map(({id, productName}) => (
         <option key={id} value={id}>{productName}</option>
     ))}
</select> 

handleChange 的作用是将所选产品 ID 设置为当前所选产品,以便我可以映射数据并将占位符设置为下面字段中的预填充数据(此处未显示)。

我通过 GraphQL useQuery 获取数据,可能是我没有像我应该的那样控制这个字段,所以在像 onSubmit 这样的事件之后我无法真正控制它。欢迎所有建议,谢谢。

最佳答案

您可以使用useRef 。它是控制表单元素的有效工具。

这是一个示例( https://codesandbox.io/s/billowing-haze-zmq4t?file=/src/App.js ):

const products = [
  {id: 112, productName: "Prod 1"},
  {id: 113, productName: "Prod 2"},
]

export default function App() {
  const dropdown = useRef();

const handleChange = () => {
  console.log('do stuff...')
  setTimeout(() => {dropdown.current.value = ""}, 2000) // <- simulating some process...
  
}

  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>

      <select ref={dropdown} className="select--field" name="products" onChange={(e) => {handleChange(e)}}>
        <option value={""}>Please select a product</option>
        {products.map(({id, productName}) => (
            <option key={id} value={id}>{productName}</option>
        ))}
    </select> 
    </div>
  );
}

关于javascript - 提交后将下拉列表恢复为默认选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66110947/

相关文章:

javascript - 是否有一种通用的跨浏览器方式来使用 JavaScript 使 div 一直向下滚动?

javascript 不能使用 forloop 对吗?

reactjs - 避免 react-router goBack() 退出应用程序

javascript - 获取请求给出错误

javascript - 在单独的文件中声明 React 路由并导入

reactjs - 使用 React Router 刷新页面或手动输入 URL 时为 "Internal Server Error"

javascript - 带有脚本标签的外部 Javascript 文件

javascript - 当 .call() 和 .apply() 的 this 值可以是 `null` 或 `undefined` 时?

javascript - addClass 隐藏在 ng-click angularJS 中

android - React native android 不使用 react-native-device-info 编译