Как обновить состояние сразу при вводе в React Native - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь получить ввод от пользователя, и он работает, но при каждом состоянии ввода обновляется и повторно отображается компонент. Я хочу обновить состояние сразу, когда пользователь вводит какой-либо запрос. Теперь, например, если я наберу 4 символа, например (enta), то мой компонент повторно отобразит 4 типа. Я хочу достичь своей цели, если, например, тип пользователя (enta), тогда я не буду повторно рендерить снова и снова. Я просто хочу сделать рендеринг один раз. Может ли кто-нибудь помочь мне.

Код

 <TextInput
        style={styles.inputStyle}
        placeholder="Search medicine and health products"
        autoCapitalize="none"
        onChangeText={(input)=>{
              this.setState({
                subCategoriesShow: true,
                loader: true,
                inputValue: value,
                queries: [],
              });
              setTimeout(() => {
                console.log("2@@@@@@@@@ ", this.state.inputValue);
                axios
                  .get(
                    `${config.apiPath}/public/api/search`,
                    {
                      params: {
                        query: this.state.inputValue,
                      },
                    }
                  )
                  .then((res) => {
                    this.setState({
                      queries: res.data,
                      loader: false,
                    });
                  });
              }, 3000);
            }}
        onBlur={handleBlur}
        autoCorrect={false}
      />

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Вы можете установить какое-либо состояние символа или использовать дебаунс.

import * as _ from 'lodash';

componentDidMount = () => {
    this.onChangeTextDelayed = _.debounce(this.onChangeData, 500);
}

 onChangeData = (event) => {
    //call some axios api and set the state.
}

 <TextField
      onChangeText={(event) => {
      this.state.searchText = event
      this.onChangeTextDelayed(event)/>
  }}
0 голосов
/ 07 мая 2020

Вы можете посмотреть что-то вроде loda sh .debounce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...