首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型'boolean‘不能指定为键入'boolean[]’

类型'boolean‘不能指定为键入'boolean[]’
EN

Stack Overflow用户
提问于 2022-09-20 12:58:48
回答 2查看 77关注 0票数 0

我想在基于布尔数组的制表符之间创建一个开关。但是,我不知道如何替换switchTabs函数以阻止显示此错误。接口的构建方式如下:

代码语言:javascript
复制
interface IData {
    setData: boolean[];
}

我的构造函数如下所示:

代码语言:javascript
复制
  constructor(props: IData) {
        super(props);
        this.state = {
            setData: [true, false, false]
        }
    }

但是,发生错误的方法(不能将“布尔型”指定为“boolean[]”)如下所示:

代码语言:javascript
复制
 private switchTabs() {
        this.setState({ setData: !this.state.setData});
    }
EN

回答 2

Stack Overflow用户

发布于 2022-09-20 13:07:25

per @evolutionxbox评论:

代码语言:javascript
复制
private switchTabs() {
        this.setState({ setData: this.state.setData.map( x=>!x});
    }

使用.map将对数组中的每个元素应用一个函数。这是一个很好的,整洁的符号。这是反转数组中的每个布尔值。不过,我不太确定如果数组包含非布尔元素会发生什么。

票数 0
EN

Stack Overflow用户

发布于 2022-09-20 13:09:15

您正在拒绝计算为false的布尔!this.state.setData数组。从而抛出那个错误。

相反,您应该创建数组的副本并修改所需的索引。

代码语言:javascript
复制
private switchTabs(tabIndex) {
        const newData = [...this.state.setData]; //copying the array
        newData[tabIndex] = !newData[tabIndex];
        this.setState({ setData: newData});
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73787128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档