Não sei o que eles estão tentando dizer com essa coisa de "React Context" - eles estão falando grego, para mim, mas aqui está como eu fiz:
Carregando valores entre funções, na mesma página
Em seu construtor, vincule seu setter:
this.setSomeVariable = this.setSomeVariable.bind(this);
Em seguida, declare uma função logo abaixo do seu construtor:
setSomeVariable(propertyTextToAdd) {
this.setState({
myProperty: propertyTextToAdd
});
}
Quando quiser configurá-lo, ligue this.setSomeVariable("some value");
(Você pode até ser capaz de escapar impune this.state.myProperty = "some value";
)
Quando você quiser pegar, ligue var myProp = this.state.myProperty;
Usar alert(myProp);
deve dar a você some value
.
Método de andaime extra para transportar valores entre páginas / componentes
Você pode atribuir um modelo a this
(tecnicamente this.stores
), para que possa referenciá-lo com 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
Guardar esta para uma pasta chamada stores
comoyourForm.jsx
.
Então você pode fazer isso em outra página:
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 você definiu this.state.someGlobalVariable
em outro componente usando uma função como:
setSomeVariable(propertyTextToAdd) {
this.setState({
myGlobalVariable: propertyTextToAdd
});
}
que você vincula no construtor com:
this.setSomeVariable = this.setSomeVariable.bind(this);
o valor em propertyTextToAdd
seria exibido SomePage
usando o código mostrado acima.
Redux
ouFlux
biblioteca que pode lidar com dados ou estado globalmente. e você pode passá-lo facilmente por todos os seus componentes