У меня есть два компонента, родитель и ребенок, как так:Проходит «этот» контекст через опоры анти-шаблон?
class Parent extends React.Component {
shuffle() {
...
}
blur() {
...
}
next() {
...
}
previous() {
...
}
render() {
return (
<Child Parent={this} />
);
}
}
class Child extends React.Component {
constructor(props) {
super();
this.state = {};
this._onShuffleClick = this._onShuffleClick.bind(props.Parent);
this._onPreviousClick = this._onPreviousClick.bind(props.Parent);
this._onNextClick = this._onNextClick.bind(props.Parent);
}
_onShuffleClick(event) {
event.preventDefault();
this.shuffled ? this.shuffle(false) : this.shuffle(true); // I can call parents method here as the 'this' context is the 'Parent'.
this.blur(event.target);
this.setState({test "test"}); //I can set the parents state here
}
_onPreviousClick(event) {
event.preventDefault();
this.previous();
this.blur(event.target);
}
_onNextClick(event) {
event.preventDefault();
this.next();
this.blur(event.target);
}
render() {
return (
<a className="shuffle" key={1} onClick={this._shuffleOnClick}>{this.props.Parent.props.html.shuffle}</a>,
<a className="previous" key={2} onClick={this._previousOnClick}>{this.props.Parent.props.html.previous}</a>,
<a className="next" key={3} onClick={this._nextOnClick}>{this.props.Parent.props.html.next}</a>,
);
}
}
Проходит контекст («это» ключевое слово) в качестве опоры анти-паттерн? Устанавливает состояние родителя у ребенка плохо?
Если я это сделаю, мне не нужно передавать множество отдельных реквизитов ребенку, и я также могу установить состояние родителя из дочернего элемента.
Этот вопрос ** не ** в основном основан на мнениях. То, что является или не является анти-паттерном, обычно не является субъективным. Тот, кто проголосовал за это, может захотеть отозвать свой голос. Только мои 2 цента. – Chris
Реакт говорит, что реквизит должен быть неизменным и сверху вниз. компоненты не могут изменить свои собственные реквизиты. Это анти-шаблон, и я не думаю, что изменение реквизита в дочернем будет показывать влияние на родителя. – vijay