Estoy tratando de cambiar el texto del botón que está en la vista de lista rápidamente después de hacer clic en él.

Estoy intentando con el siguiente código para implementar esto, pero no puedo hacerlo, es decir, no funciona. ¿Cómo puedo hacerlo? por favor ayuda.

constructor(props) {
    super(props);
    this.state = {
      button_text:"Connect",
    }
  }

  ConPressed() {
    this.setState({
      button_text: "Connected",
    });
  }

  render() {
    return (
      <ListView
        dataSource={this.state.sa}
        renderRow={(rowData) => 

       <TouchableHighlight onPress={() => this.ConPressed()}>
          <Text>{this.state.button_text}</Text>
       </TouchableHighlight>

      />
    );
  }
3
Mayuresh Patil 18 ene. 2018 a las 20:01

3 respuestas

La mejor respuesta
export default class ListItem extends Component {
  constructor(props) {
    super(props);

    this.state = {
      button_text: 'Connect',
    }
  }


  ConPressed = () => {
    this.setState({ button_text: 'Connected' });
  }


  render() {
    return (
      <TouchableHighlight onPress={this.ConPressed}>
        <Text>{this.state.button_text}</Text>
      </TouchableHighlight>
    );
  }
}

Entonces, ahora desea importar su ListItem en su archivo original y usarlo en su renderRow.

renderRow={() => <ListItem />}

2
MattyK14 19 ene. 2018 a las 14:15

Enlace ConPressed() al alcance.

constructor(props) {
    super(props);
    this.state = {
        button_text:"Connect",
    }
    this.ConPressed = this.Conpressed.bind(this);
}
-1
Alessandro Macanha 18 ene. 2018 a las 17:06

En su código para el tocable, está pasando una ejecución de método y no una referencia de método.

<TouchableHighlight
onPress={() => this.ConPressed()}>
<Text>{this.state.button_text}</Text>
</TouchableHighlight>

Lo que significa que conPressed se ejecutará tan pronto como se monte el componente, lo que probablemente sea la razón por la que obtiene el error. Intenta cambiarlo a

<TouchableHighlight
onPress={() => this.ConPressed}>
<Text>{this.state.button_text}</Text>
</TouchableHighlight>

Y también

this.ConPressed = this.ConPressed.bind(this)

En su constructor

0
Nemi Shah 19 ene. 2018 a las 03:09
48326655