• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

271
Views
Reaccionar: Almacenar variable estática en estado vs variable de renderizado

Encontré una discusión similar a mi pregunta aquí, pero quería profundizar más.

Todavía tengo que encontrar cualquier documentación de React que discuta si las variables estáticas (que no cambian pero deben usarse para una vista de React) deben almacenarse como una variable de estado o reconstruirse cada vez que se vuelve a representar el componente.

Digamos que tengo un componente React que admite un accesorio, que es una lista, y quiero asignar esta lista a una determinada salida. En mi caso de uso, estoy convirtiendo la lista en el formato de las opciones que usará el selector de selección de mi componente. Una vez hecha esta lista, no es necesario cambiarla. Todas las opciones seguirán siendo las mismas durante el resto del uso del componente.

Se siente extraño ponerlo en estado, aunque parece más eficiente. Vayamos a través de dos enfoques.

Enfoque n.º 1: almacenar la lista de opciones en el estado del componente.

 class Component extends React.Component { constructor(props) { this.state = { options: props.list.map(some => computation) } } render() { return ( <SelectPicker options={this.state.options} /> ) } }

Enfoque #2: Vuelva a crear la variable en cada renderizado.

 class Component extends React.Component { constructor(props) { ... } render() { const options = this.props.list.map(some => computation) return ( <SelectPicker options={options} /> ) } }

Lo último parece más correcto, ya que dado que la matriz de opciones nunca debe cambiar, solo debe inicializarse una vez, y no tiene sentido ponerle un observador por ser parte de state . El primero parece más eficiente, ya que solo calculamos este valor una vez, en lugar de volver a calcularlo cada vez que se vuelve a renderizar el componente. Sí, React comparará el estado entre renderizaciones, pero ¿no comparará las referencias de la lista de options ? ¿Mientras que el último ejemplo reconstruirá completamente una nueva lista? Tbh, ninguno de estos parece ser el enfoque "limpio" de esto.

about 3 years ago · Santiago Gelvez
1 answers
Answer question

0

La mejor opción es ninguna. En su función de constructor, establezca this.options en la matriz asignada y luego acceda a ella con this.options en su método de representación.

 class Component extends React.Component { constructor(props) { this.options = props.list.map(some => computation); } render() { return ( <SelectPicker options={this.options} /> ) } }

Esto evita crear la misma matriz una y otra vez. Está perfectamente bien establecer valores en this. directamente, el punto de estado es que si una variable de estado cambia, el método de render se vuelve a llamar.

about 3 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error