react props example component javascript reactjs properties

javascript - props - ¿Puedo actualizar los accesorios de un componente en React.js?



reactjs setstate (3)

Los apoyos pueden cambiar cuando el elemento primario de un componente vuelve a representar el componente con diferentes propiedades. Creo que esto es principalmente una optimización, por lo que no es necesario crear una instancia de ningún componente nuevo.

Después de comenzar a trabajar con React.js, parece que los props están destinados a ser estáticos (pasados ​​desde el componente principal), mientras que state cambios de state se basan en los eventos. Sin embargo, noté en los documentos una referencia a componentWillReceiveProps , que incluye específicamente este ejemplo:

componentWillReceiveProps: function(nextProps) { this.setState({ likesIncreasing: nextProps.likeCount > this.props.likeCount }); }

Esto parece implicar que las propiedades PUEDEN cambiar en un componente basado en la comparación de nextProps con this.props . ¿Qué me estoy perdiendo? ¿Cómo cambian los accesorios, o me equivoco acerca de dónde se llama esto?


Truco para actualizar los accesorios si son array:

import React, { Component } from ''react''; import { AppRegistry, StyleSheet, Text, View, Button } from ''react-native''; class Counter extends Component { constructor(props) { super(props); this.state = { count: this.props.count } } increament(){ console.log("this.props.count"); console.log(this.props.count); let count = this.state.count count.push("new element"); this.setState({ count: count}) } render() { return ( <View style={styles.container}> <Text>{ this.state.count.length }</Text> <Button onPress={this.increament.bind(this)} title={ "Increase" } /> </View> ); } } Counter.defaultProps = { count: [] } export default Counter const styles = StyleSheet.create({ container: { flex: 1, justifyContent: ''center'', alignItems: ''center'', backgroundColor: ''#F5FCFF'', }, welcome: { fontSize: 20, textAlign: ''center'', margin: 10, }, instructions: { textAlign: ''center'', color: ''#333333'', marginBottom: 5, }, });


Un componente no puede actualizar sus propios accesorios a menos que sean matrices u objetos (tener un componente que actualice sus propios accesorios, incluso si es posible es un antipatrón), pero puede actualizar su estado y los accesorios de sus elementos secundarios.

Por ejemplo, un Tablero tiene un campo de speed en su estado, y lo pasa a un niño Gauge que muestra esta velocidad. Su método de render es simplemente return <Gauge speed={this.state.speed} /> . Cuando el Tablero llama a this.setState({speed: this.state.speed + 1}) , el Gauge se vuelve a representar con el nuevo valor de speed .

Justo antes de que esto suceda, se llama al componentWillReceiveProps de Gauge, de modo que el indicador tenga la posibilidad de comparar el nuevo valor con el anterior.