Je ne sais pas ce qu'ils essaient de dire avec ce truc "React Context" - ils me parlent grec, mais voici comment je l'ai fait:
Transporter des valeurs entre les fonctions, sur la même page
Dans votre constructeur, liez votre setter:
this.setSomeVariable = this.setSomeVariable.bind(this);
Ensuite, déclarez une fonction juste en dessous de votre constructeur:
setSomeVariable(propertyTextToAdd) {
this.setState({
myProperty: propertyTextToAdd
});
}
Lorsque vous souhaitez le configurer, appelez this.setSomeVariable("some value");
(Vous pourrez peut-être même vous en sortir this.state.myProperty = "some value";
)
Lorsque vous voulez l'obtenir, appelez var myProp = this.state.myProperty;
L'utilisation alert(myProp);
devrait vous donner some value
.
Méthode d'échafaudage supplémentaire pour transmettre des valeurs à travers les pages / composants
Vous pouvez attribuer un modèle à this
(techniquement this.stores
), vous pouvez donc le référencer avec this.state
:
import Reflux from 'reflux'
import Actions from '~/actions/actions`
class YourForm extends Reflux.Store
{
constructor()
{
super();
this.state = {
someGlobalVariable: '',
};
this.listenables = Actions;
this.baseState = {
someGlobalVariable: '',
};
}
onUpdateFields(name, value) {
this.setState({
[name]: value,
});
}
onResetFields() {
this.setState({
someGlobalVariable: '',
});
}
}
const reqformdata = new YourForm
export default reqformdata
Enregistrer à un dossier appelé stores
comme yourForm.jsx
.
Ensuite, vous pouvez le faire dans une autre page:
import React from 'react'
import Reflux from 'reflux'
import {Form} from 'reactstrap'
import YourForm from '~/stores/yourForm.jsx'
Reflux.defineReact(React)
class SomePage extends Reflux.Component {
constructor(props) {
super(props);
this.state = {
someLocalVariable: '',
}
this.stores = [
YourForm,
]
}
render() {
const myVar = this.state.someGlobalVariable;
return (
<Form>
<div>{myVar}</div>
</Form>
)
}
}
export default SomePage
Si vous aviez défini this.state.someGlobalVariable
un autre composant en utilisant une fonction telle que:
setSomeVariable(propertyTextToAdd) {
this.setState({
myGlobalVariable: propertyTextToAdd
});
}
que vous liez dans le constructeur avec:
this.setSomeVariable = this.setSomeVariable.bind(this);
la valeur dans propertyTextToAdd
serait affichée en SomePage
utilisant le code ci-dessus.
Redux
uneFlux
bibliothèque qui peut gérer des données ou un état globalement. et vous pouvez le passer facilement à travers tous vos composants