Non so cosa stiano cercando di dire con questa roba "React Context" - mi parlano in greco, ma ecco come l'ho fatto:
Trasportare valori tra le funzioni, sulla stessa pagina
Nel tuo costruttore, collega il tuo setter:
this.setSomeVariable = this.setSomeVariable.bind(this);
Quindi dichiara una funzione appena sotto il tuo costruttore:
setSomeVariable(propertyTextToAdd) {
this.setState({
myProperty: propertyTextToAdd
});
}
Quando vuoi impostarlo, chiama this.setSomeVariable("some value");
(Potresti anche essere in grado di farla franca this.state.myProperty = "some value";
)
Quando vuoi ottenerlo, chiama var myProp = this.state.myProperty;
L'utilizzo alert(myProp);
dovrebbe darti some value
.
Metodo di scaffolding aggiuntivo per trasferire i valori tra pagine / componenti
Puoi assegnare un modello a this
(tecnicamente this.stores
), quindi puoi fare riferimento ad esso con 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
Salvalo in una cartella chiamata stores
come yourForm.jsx
.
Quindi puoi farlo in un'altra pagina:
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
Se avessi impostato this.state.someGlobalVariable
in un altro componente utilizzando una funzione come:
setSomeVariable(propertyTextToAdd) {
this.setState({
myGlobalVariable: propertyTextToAdd
});
}
che leghi nel costruttore con:
this.setSomeVariable = this.setSomeVariable.bind(this);
il valore in propertyTextToAdd
sarebbe visualizzato SomePage
utilizzando il codice mostrato sopra.
Redux
oFlux
libreria in grado di gestire i dati o dello stato a livello globale. e puoi passarlo facilmente attraverso tutti i tuoi componenti