首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在第二次单击后响应复选框更新

在第二次单击后响应复选框更新
EN

Stack Overflow用户
提问于 2022-08-23 03:06:33
回答 1查看 72关注 0票数 0

我正在尝试实现多个复选框,但是onChange只在再次单击其他复选框之后才生效,下面是代码片段:

在这里,我初始化将被呈现为组件呈现上的复选框的对象数组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const contentFilters = ['Videos', 'Life Events', 'Collabs'];
const [selectedContentFilters, setSelectedContentFilter] = useState([]);

    useEffect(() => {
      setSelectedContentFilter(
      contentFilters.map((filter, index) => {
        return {
          id: index + 1,
          label: filter,
          checked: false,
        };
      }),
    );
  }, []);

下面是如何将对象数组映射到复选框组件中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{selectedContentFilters.map((filter) => {
                    return (
                      <DropDownItem key={filter.id}>
                        <CheckboxContainer>
                          <input
                            id={filter.id}
                            type={'checkbox'}
                            onChange={() => {
                              _setSelectedContentFilter(filter.id);
                            }}
                            checked={filter.checked}
                            name={filter.label}
                          />
                          <Label>{filter.label}</Label>
                        </CheckboxContainer>
                      </DropDownItem>
                    );
                  })}

下面是被调用的_selectedContentFilter,一旦onChange触发器更新数组状态,我就克隆数组,以便没有相同的引用并导致状态更新的重新呈现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const _setSelectedContentFilter = (id) => {
    let cloneSelectedContentFilter = [...selectedContentFilters];
    cloneSelectedContentFilter = cloneSelectedContentFilter.map((filter) => {
      if (filter.id === id) {
        filter.checked = !filter.checked;
      }
      return filter;
    });
    setSelectedContentFilter(cloneSelectedContentFilter);
  };
EN

回答 1

Stack Overflow用户

发布于 2022-08-23 07:05:07

该问题是由react引导下拉项组件引起的,该组件导致复选框延迟重新呈现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73457608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文