Nie wiem, co próbują powiedzieć za pomocą tego „kontekstu reakcji” - mówią do mnie po grecku, ale oto jak to zrobiłem:
Przenoszenie wartości między funkcjami na tej samej stronie
W swoim konstruktorze powiąż setera:
this.setSomeVariable = this.setSomeVariable.bind(this);
Następnie zadeklaruj funkcję tuż pod konstruktorem:
setSomeVariable(propertyTextToAdd) {
this.setState({
myProperty: propertyTextToAdd
});
}
Jeśli chcesz to ustawić, zadzwoń this.setSomeVariable("some value");
(Możesz nawet ujść na sucho this.state.myProperty = "some value";
)
Kiedy będziesz chciał, zadzwoń var myProp = this.state.myProperty;
Używanie alert(myProp);
powinno ci daćsome value
.
Dodatkowa metoda tworzenia szkieletów do przenoszenia wartości między stronami / komponentami
Możesz przypisać model do this
(technicznie this.stores
), więc możesz odwołać się do niego za pomocą 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
Zapisz to w folderze o nazwie stores
jako yourForm.jsx
.
Następnie możesz to zrobić na innej stronie:
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
Jeśli ustawiłeś this.state.someGlobalVariable
inny komponent za pomocą funkcji takiej jak:
setSomeVariable(propertyTextToAdd) {
this.setState({
myGlobalVariable: propertyTextToAdd
});
}
który łączysz w konstruktorze z:
this.setSomeVariable = this.setSomeVariable.bind(this);
wartość w propertyTextToAdd
zostanie wyświetlona przy SomePage
użyciu kodu pokazanego powyżej.
Redux
lubFlux
biblioteki, która może obsługiwać dane lub stan globalnie. i możesz łatwo przejść przez wszystkie komponenty