Backspace курсора не удаляет последний символ числового формата в реакции - PullRequest
1 голос
/ 07 июня 2019

Я новичок, чтобы реагировать.Например, введенное значение 1,2,3,4, и после события onChange оно принимает только цифры, тогда я могу удалить 4,3,2 с помощью возврата, но не 1. И в HTML DOM также нельзя удалить 1.

 class House extends Component {

    state = {
        room: null,
      };

    componentDidMount() {

        if (this.props.house.rent) {
          this.setState({ rent: this.props.house.rent });
        }
      }

         onChange = (field, value, mutate) => {
            if (field === "houseroom") {
              value = parseInt(value.replace(/[@,]/g, ""));

            }

         mutate({
              variables: {
              },
            });
 this.setState({
      [field]: value,
    });
          };


            render(){
     const {house} = this.props;
             <SomeInput

                        type="text"
                        value={
                          (house.room&&
                            `$${house.room.toLocaleString("en")}`) ||
                          ""
                        }
                        onChange={e => {
                          e.target.placeholder = "Room";
                          this.onChange("houseroom", e.target.value, mutate);
                        }}

        }
        />

    }

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Надеюсь, это кому-нибудь поможет! Необходимо упомянуть «this.state.room» во входном значении и проверить состояние prev с помощью componentDidUpdate, затем «this.setState» здесь и, наконец, «this.setState» во время изменения события. Спасибо всем

0 голосов
/ 07 июня 2019

Похоже, что во время обновления состояния возникает большая проблема, возможно, из-за переопределения в другом месте компонента, вместо этого попробуйте использовать prevState, поэтому убедитесь, что обновление состояния не может конфликтовать.

this.setState(prevState => {
             [field]:value; 
    });

Держите меня в курсе результатов.

...