我不了解此代码的工作方式。如何使用正则表达式设置状态?最重要的是,如何知道使用结果变量设置状态?
handleClick(evt) {
const id = evt.target.id;
const result = evt.target.value;
this.setState(prevState => ({
value: `${prevState.value}${result}`
.replace(/([/+\-/*=])([/+\-*=])/g, "$2")
.replace(/^0+(?=[1-9])/, "")
.replace(/^0+(?=\.)/, "0")
.replace(/^0+\B/, "")
}));
}
}
答案 0 :(得分:0)
因此,此代码执行以下操作:
1.将prevState.value
和evt.target.value
连接成单个字符串(了解有关ES6 Template literals的更多信息)
2.替换所有组合,例如++
,+-
,+*
,+=
,-+
,--
,-*
,{{ 1}},-=
,*+
,*-
,**
,*=
,=+
,=-
,{{1} }作为第二个字符(但我认为代码中有错误,replace语句应为=*
,详细了解regex)
3.从字符串中删除所有以0开头的数字,例如==
,([\+\-*=])([\+\-*=])
等。
4.删除所有以0开头的单词,例如0009
,01
等。
5.从字符串中删除所有0a
(了解有关\B的更多信息)
6.将结果字符串设置为0000z
(了解有关React setState()的更多信息)