我在一个页面上有许多复选框,在onClick上它应该调用函数并将相关的值设置为True或False,但我必须单击它两次才能将值反映在页面上.

有没有人能告诉我我哪里搞错了?

勾选框

<input
  type="checkbox"
  id="search1"
  name="search1"
  onClick={(e) => handleSearchPropRef(e)}
/>

功能

    const handleSearchPropRef = (e) => {
      const value = e.target.checked;
      setSearchPropRef(value);
    };

推荐答案

在您的样例代码中,您没有设置checked值,我假设您有一个searchPropRef布尔值.如果你要用checked,你应该用onChange而不是onClick.如果页面上有number of checkboxes,请确保它们都使用唯一的ID、名称和州值.

下面是一个带有两个复选框的工作示例:https://stackblitz.com/edit/stackblitz-starters-tfjeiz?file=src%2FApp.js

const [searchPropRef1, setSearchPropRef1] = useState(false);
const [searchPropRef2, setSearchPropRef2] = useState(false);

const handleSearchPropRef1 = (e) => {
  const value = e.target.checked;
  setSearchPropRef1(value);
};
const handleSearchPropRef2 = (e) => {
  const value = e.target.checked;
  setSearchPropRef2(value);
};

return (
  <div>
    <div>
      <input
        type="checkbox"
        id="search1"
        name="search1"
        checked={searchPropRef1}
        onChange={handleSearchPropRef1}
      />
      <label htmlFor="search1">Search1</label>
    </div>
    <div>
      <input
        type="checkbox"
        id="search2"
        name="search2"
        checked={searchPropRef2}
        onChange={handleSearchPropRef2}
      />
      <label htmlFor="search2">Search2</label>
    </div>
  </div>
);

您应该不需要任何回调来使某些复选框起作用.

Reactjs相关问答推荐

构建next.js项目时状态不变,但在dev服务器中

滚动事件监听器在Next.js客户端组件中不触发

有没有办法让两个状态在两次精准渲染中更新?

Reaction Google Maps API无法获取标题

在构建或部署Reaction应用程序时出错

如何使用.Aggregate从多个集合中获取数据,包括使用Mongoose+NextJS的SUM值

为什么在页面重新加载时Location.State变得未定义?

useEffect firebase 清理功能如何工作?

如何在我的 React 应用程序中仅显示我的 Register 组件

在 React 中将 MUI 样式外包到单独的文件中?

有没有办法在用户离开页面时防止输入模糊?

React Native应用如何订阅Supabase的实时数据?

将 clerk 与 supabase 集成的最佳实践

为什么刷新页面时我的localStorage PET值变成空字符串?

条件渲染元素的测试不起作用

React Native Realm 应用程序在发布构建后崩溃

页面加载时不显示数组中的数据

React 中的 Slide API Mui 在开始而不是结束时触发侦听器

理解 React 中的 PrevState

为什么重新渲染不会影响 setTimeout 的计数?