У меня есть код ниже в моем компоненте реакции
export default class CalculatedMeasure extends React.Component {
constructor(props) {
super(props);
let formulaInput = [
"(", "(", "(", "2", "+", "3", ")", "*", "3", ")", "+", "(", "12", "/" ];
this.state = {
formulaArray: formulaInput,
selectedIndex: size(formulaInput)? size(formulaInput) - 1: 0
}
this.handleDeleteCalculatorValues = this.handleDeleteCalculatorValues.bind(this);
}
handleDeleteCalculatorValues(event = {}) {
const { keyCode } = event;
let keyPressCodes = [ON_DELETE_KEY_PRESS,ON_BACKSPACE_KEY_PRESS];
if (isNil(keyCode) || includes(keyPressCodes,keyCode)) {
if(isEmpty(this.state.formulaArray)){
return false;
}
let index = this.state.selectedIndex;
if(!isJsonObject(this.state.formulaArray[index]) && !isOp(this.state.formulaArray[index])){
const newArray = this.state.formulaArray;
newArray[index] = this.state.formulaArray[index].slice(0, -1);
if(newArray[index].length == 0){
this.setState({
selectedIndex: index - 1
})
}
this.setState({
formulaArray: newArray
});
}
else{
this.state.formulaArray.splice(index);
this.setState({
selectedIndex: index - 1,
})
}
}
}
render(){
return()
<div ref={this.calculatedMeasureRef} tabindex="10" id="calculated-measure-container" className="col-md-12" onKeyDown={this.handleDeleteCalculatorValues}>
<div>{this.state.formulaArray}</div>
</div>
}
}
когда я пытаюсь удалить элементы в массиве формул с помощью клавиши BackSpace и клавиши Delete Key, они отлично работают в Chrome, но эти ключи не работают должным образом в IE.
В IE, когда нажата клавиша BackSpace, окно перемещается на предыдущую вкладку, и иногда никакие действия не выполняются