Javascript 使用逻辑运算符分解状态分配

Javascript 使用逻辑运算符分解状态分配,javascript,eslint,Javascript,Eslint,在这个.state.keyboard上,ESLint给出了一个错误:必须使用destructuring state assignment react/destructuring assignment 常量键盘=this.state.keyboard | |数据[0]; 当然,我可以这样做: 让{keyboard}=this.state; 键盘=键盘| |数据[0]; 但是有没有一种方法可以在一行中使用const来实现呢? 谢谢。我不认为有一种方法可以使用const在一行中完成这项工作,并获得与您

在这个.state.keyboard上,ESLint给出了一个错误:必须使用destructuring state assignment react/destructuring assignment

常量键盘=this.state.keyboard | |数据[0]; 当然,我可以这样做:

让{keyboard}=this.state; 键盘=键盘| |数据[0]; 但是有没有一种方法可以在一行中使用const来实现呢?
谢谢。

我不认为有一种方法可以使用const在一行中完成这项工作,并获得与您完全相同的行为,即在键盘出错时将数据[0]分配给键盘

如果您分解键盘结构并给它一个默认值,如下所示:

const { keyboard = data[0] } = this.state;
只有在此.state中定义了键盘,才会将其设置为数据[0]。这句话也是如此:

const { keyboard } = { keyboard: data[0], ...this.state };

可能是常量{keyboard=data[0]}=this.state,但它的功能与逻辑OR不完全相同,或说明错误值。您也可以忽略类成员的警告:ignoreClassFields设置将实现此功能。请注意,这在功能上并不完全等同于OP的代码,因为这仅在未定义键盘时才遵从数据[0],与其说是错误的,还不如说是第二种解决方案,它实际上并不等同,但在我的情况下是有效的,谢谢。