Входное значение не видно полностью, почему? - PullRequest
0 голосов
/ 28 октября 2018

Итак, почти все работает так, как должно, проблема в том, что когда я что-то набираю на вводе, он не обновляет состояние избыточности полностью.Пример: если я наберу ABC, он отправит это на сервер через axios.post (), как AB ... Если я наберу BEER, то отправит BEE ... Он не увидит последнее письмо или если я выберу автозаполнение текста на моемустройство, оно не видит всего слова, если оно является последним на входе ....

Есть предложения?

Заранее спасибо.

  class AddressScreen extends Component {
      state = {
        usersNickOrName: "",
        usersAddress: "",
        usersPhoneNumber: ""
      };

      componentWillUpdate() {
    this.props.deliveryInfo(
      this.state.usersNickOrName,
      this.state.usersAddress,
      this.state.usersPhoneNumber
    );
  }

      onPressHandler = () => {


        let uid = this.props.uid;

        axios.post(
          `.../users/${uid}/info.json`,
          {
            nameOrNick: this.props.name,
            address: this.props.address,
            phoneNum: this.props.phoneNum
          }
        );
        this.props.navigator.pop();
      };

      render() {
        return (
          <View style={styles.container}>

            <AnimatedForm delay={100} distance={10}>
              <AnimatedInput
               onChangeText={text => {
                  this.setState({ usersNickOrName: text });
                }}
              />
              <AnimatedInput
                onChangeText={text => {
                  this.setState({ usersAddress: text });
                }}
              />
              <AnimatedInput
                onChangeText={text => {
                  this.setState({ usersPhoneNumber: text });
                }}
              />

              <Animated.View style={styles.buttonView}>
                <TouchableOpacity
                  style={styles.button}
                  onPress={this.onPressHandler}
                >
                  <Text style={{ color: "#fff" }}>Dodaj Info</Text>
                </TouchableOpacity>
              </Animated.View>
            </AnimatedForm>
          </View>
        );
      }
    }



    const mapStateToProps = state => {
      return {
        name: state.usersNickOrName,
        address: state.usersAddress,
        phoneNum: state.usersPhoneNumber,
        uid: state.userUid
      };
    };

    const mapDispatchToProps = dispatch => {
      return {
        deliveryInfo: (usersName, usersAddress, phoneNum) =>
          dispatch(deliveryInfo(usersName, usersAddress, phoneNum))
      };
    };

    export default connect(
      mapStateToProps,
      mapDispatchToProps
    )(AddressScreen);

1 Ответ

0 голосов
/ 28 октября 2018

Вы используете старое состояние в componentWillUpdate.Вместо этого используйте следующее состояние.

componentWillUpdate(nextProps, nextState) {
  this.props.deliveryInfo(
    nextState.usersNickOrName,
    nextState.usersAddress,
    nextState.usersPhoneNumber
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...