События Key и BackSpace Key не работают в IE - PullRequest
0 голосов
/ 26 января 2019

У меня есть код ниже в моем компоненте реакции

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, окно перемещается на предыдущую вкладку, и иногда никакие действия не выполняются

...