Как я могу получить глобальную переменную в компоненте, к которому все методы имеют к нему доступ? Я не могу использовать состояние, потому что у меня есть вложенный рендеринг и, изменяя состояние переменной, я получаю предупреждение о том, что рендер должен быть чистым и не использовать setState
внутри рендеринга ....! Поэтому мне нужно иметь регулярную глобальную переменную, доступную всеми методами компонента, и иметь возможность изменять ее значение там, где это необходимо. Кто-нибудь может мне помочь?Глобальная переменная в Reactjs
P.S. Почему я не должен менять такое состояние: this.state.variable = true;
?
Так вот мой упрощенный код. this.setState({hidden: true});
сделает предупреждение, потому что этот компонент выполняет рендеринг внутри другого компонента. Мне нужно сделать hidden
, чтобы вести себя как глобальная переменная и не использовать состояние!
const Component = React.createClass({
mixins: [React.addons.PureRenderMixin],
getInitialState: function() {
return {hidden: false};
},
renderFixedFields(.....) {
var request_link;
if (!this.state.hidden) {
request_link = <Link to={`/${record.get('id')}/request`}>Send Request </Link>
}
else {
request_link = null
}
return (
<div>
{request_link}
</div>
)
},
renderField(.....) {
var self = this;
//....
if (fieldID == "open_access") {
this.setState({hidden: true});
}
return (
//.....
);
},
renderFieldBlock(........) {
const [maj, min] = getMajMinFields(s);
//....
const minFields = min.entrySeq().map(
([id, f]) => this.renderField(fieldID, .....));
return (
//...
<div>
{ minorFields }
</div>
);
},
}
и где 'fieldID' установлен? –
@chasenyc Обновлен вопрос. 'renderFieldBlock' отправляет' fieldID' как аргумент 'renderField' – Birish