Я не знаю, что они пытаются сказать этим "React Context" - они говорят со мной по-гречески, но вот как я это сделал:
Передача значений между функциями на одной странице
В своем конструкторе привяжите свой сеттер:
this.setSomeVariable = this.setSomeVariable.bind(this);
Затем объявите функцию чуть ниже вашего конструктора:
setSomeVariable(propertyTextToAdd) {
this.setState({
myProperty: propertyTextToAdd
});
}
Когда вы захотите установить его, позвоните this.setSomeVariable("some value");
(Возможно, вам даже удастся уйти this.state.myProperty = "some value";
)
Когда захочешь получить, звони var myProp = this.state.myProperty;
Использование alert(myProp);
должно дать вам some value
.
Дополнительный метод построения лесов для переноса значений по страницам / компонентам
Вы можете назначить модель this
(технически this.stores
), чтобы затем ссылаться на нее 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
Сохраните это в папке под stores
названиемyourForm.jsx
.
Затем вы можете сделать это на другой странице:
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
Если вы установили this.state.someGlobalVariable
другой компонент, используя такую функцию, как:
setSomeVariable(propertyTextToAdd) {
this.setState({
myGlobalVariable: propertyTextToAdd
});
}
которые вы связываете в конструкторе с помощью:
this.setSomeVariable = this.setSomeVariable.bind(this);
значение propertyTextToAdd
будет отображаться при SomePage
использовании кода, показанного выше.
Redux
илиFlux
библиотеку, которая может обрабатывать данные или состояние глобально. и вы можете легко передать его через все ваши компоненты