2017-07-13 5 views
0

newb sur ReactJS, regardons un code J'utiliseReact setState automatiquement avec la fonction standar Javascript

<!-- language: lang-js --> 
import Oak from './Oak' 
class Space extends Component { 
    componentWillMount() { Newstate = Oak(oldState) } 
    componentWillUpdate() { } 

    render() { 
    return() 
    } 
} 

function mapStateToProps (state) { return {bigStateTree: state.bigTree } } 
export default connect(mapStateToProps)(Space) 
---------- 
//Oak.js 
export default function Oak (inputState = null) { 
dosome 3D dance 
return bigStateTree 
} 

utilisant ReactJS et Redux sur le panneau ctrl (Space.js), certains 3d sur toile (chêne. js).
La question est:
Je souhaite obtenir des données de la valeur de retour Oak.js puis rediffuser (appelez le Newstate = Oak (oldState) à nouveau) la base 3d dans l'état, c'est la boucle quand l'état change 3d changements lorsque l'état change les changements 3d, pas de clic pas de changement.

base de

sur les recommandations de StackOverflow NEVER mutate this.state directly

Je ne sais pas ce qu'il faut faire maintenant ...

Répondre

0

d'abord dans le constructeur, vous devez définir l'état initial. Pour ce faire, comme suit, où yourProperty est la clé que vous voulez et defaultValue est une valeur de vous choisir:

this.state = { yourProperty: defaultValue } 

Puis, en componentWillMount():

this.setState({ yourProperty: Oak(this.state.yourProperty) }) 

et enfin accéder à l'état dans le méthode render():

return (
    <div>{this.state.yourProperty}</div> 
    ); 

le seul moment où vous pouvez attribuer une valeur à this.state sans la méthode setState est dans le constructeur. Notez également que vous ne pouvez pas changer d'état dans la méthode render().

La lecture du cycle de vie des composants React serait utile.

+0

Merci @Andre, j'ai lu le document ReactJs. actuellement, j'utilise le réducteur, pour expédier le magasin. avec le nouvel état créé en appelant (Newstate = Oak (oldState)), cette fonction appelle à nouveau. puis redécouvrez. Est-ce possible, ou je suis sur la mauvaise voie en appelant une fonction reproduisant l'état. –

+0

J'ai tendance à limiter l'utilisation de redux là où c'est logique. Vous devez vous demander si vous avez affaire à quelque chose qui devrait être un état local ou s'il devrait être partagé entre des composants. –

+0

tous les composants doivent partager avec le magasin, seulement quelques composants, à l'exception de la toile –