Санкционировать данные в react

У меня есть функция, с которой я хочу санкционировать, если данные, которые проходят как параметры пустые; если они пустые, он превращается в 0 в противоположном случае перемещает стоимость, которая послана ему.

validar(){
    this.setState({nombre:"", apellido:"", email:""});

    if( this.state.tipo_contacto == 1){
        this.state.id = "/0";
        this.state.value = "/"+ 1;
        if(document.getElementById('nombre').value != ""){
            this.state.nombre = "/"+ ascii_to_hexa(document.getElementById('nombre').value);
        }else{
            this.state.nombre = "/0";
        }
        if(document.getElementById('apellido').value != ""){
            this.state.apellido = "/"+ ascii_to_hexa(document.getElementById('apellido').value);
        }else{
            this.state.apellido = "/0";
        }
        if(document.getElementById('email').value != ""){
            this.state.email = "/"+ ascii_to_hexa(document.getElementById('email').value);
         }else{
            this.state.email = "/0";
         }    
    }
 }

 getSearchPerson(){
    this.validar();
    CleverRequest.get(CleverConfig.getApiUrl('profile')+'/clientes/filtroparametroscontac/' +  this.props.value + '/' + this.state.id +  '/' + this.state.name + '/' + this.state.apellido + '/' + this.state.email + '/' + this.state.limit + '/' + this.state.offset,(response,error) => 
    {
        if(!error)
        {
            this.setState({
                getSearchEmpresa : response,
            })
        }else
        {
            console.log(error);
        };
    });
}

Это мой код, но не функционирует и не, что я врежу. Я надеюсь, что они могут помогать мне.

0
задан 28.03.2019, 09:14
1 ответ

Haré ответ, не зная хорошо проблемы, которая у тебя есть, но помогли в refactorizar c¦digo и чтобы понимать немного mÃ: s функционирование тогда podrÃ: s решать mÃ: s rÃ: я прошу, и страховка помогла тебе прояснять много.

первой, что я вижу, является форма, в которой ты используешь твои inputs, и когда я упоминаю о тебе, что ты можешь делать c¦digo mÃ: s масштабируемый, он, потому что ты можешь bindear funci¦n в твои inputs потом не быть должным искать их в DOM (Это что-то важное из tecnolog¦-эксперта, ты активируешь и скорость DOM), для этого ты можешь делать это:

<!-- defines tu input en html normal !-->
<input name="nombre" onChange={this.onChangeInput.bind(this)} />

мы делаем Ему bind в método onChange для того, чтобы всякий раз когда я изменился он назвал funci¦n, который ты будешь определять в твоем компоненте, как мы поместили ему onChangeInput тогда, называем ее равной:

// En algún lado de tu componente, donde defines tus métodos
onChangeInput(event) {
    // 'event' es el evento nativo, el cual tiene un objetivo (target)
    // que viene siendo el nodo en el DOM (O sea, el input que definimos antes),
    // por lo que podemos llamar al atributo 'name' (que lo definimos),
    // y el atributo 'value' (lo mismo que document.getElementById('nombre').value)
    this.setState({ [event.target.name]: event.target.value });
}

С [event.target.name] : event.target.value мы говорим ему в react, чтобы он сохранял в состоянии новый ключ с именем неудара в лунку, что cambiÃ, и он setee стоимость, что пользователь escogià в неударе в лунку. FÃ: cil :)

Сейчас ты método validaci¦n. Это explicaré в c¦digo:

validate() {
  // OJO que comenté esto
  // this.setState({ nombre: '', apellido: '', email: '' });
  // Lo comento porque no sé la razón de tenerlo, además que los inputs tomarán esos valores,
  // y si no lo comento, entonces la validación no servirá, pero si necesitas limpiar
  // estos valores antes de validar, siempre puedes crear unos adicionales, o llamar
  // a tus inputs con un prefijo. Por ejemplo 'input_nombre'

  if (this.state.tipo_contact === 1) {  // usa === en vez de ==
    this.setState({
      id: "/0",
      value: "\1",
      nombre: this.state.nombre.trim() ? `/${ascii_to_hexa(this.state.nombre)}` : '/0',
      apellido: this.state.apellido.trim() ? `/${ascii_to_hexa(this.state.apellido)}` : '/0',
      email: this.state.email.trim() ? `/${ascii_to_hexa(this.state.email)}` : '/0',
    });
  }
}

BÃ: sicamente, когда он санкционирует estÃ: asignÃ: ndole в каждую переменную один '/0' если estÃ: vac¦ - или или стоимость согласно funci¦n ascii_to_hexa, если у него есть стоимость.

, Поскольку я повторяю тебя, не sé, если это dé с soluci¦n в твой вопрос и ответ, но если это может быть большая причина проблемы, и возможно, что c¦digo, который я поместил aquà - ты не функционирует, такой который, mÃ: s, если ты нуждаешься в том, чтобы иметь в различных переменных стоимость неудара в лунку и с другой стороны стоимость, которую ты распределяешь с твоим funci¦n ascii_to_hex, но bÃ: sicamente, correcci¦n, который hab¦, - в который делать твоему c¦digo вне l¦gica, был формой, как ты распределял стоимость в состояние.

Любой вопрос или тревога, которые у тебя были бы, ты комментируешь мне и со вкусом ты ayudaré, чтобы решать

0
ответ дан 19.11.2019, 21:19

Теги

Похожие вопросы