Всем привет, проблема вот в чем:
у меня есть родительский компонент в котором все находиться, в нем есть дочернии компоненты. Часть я должен показывать сразу, а часть потом. Так вот после того как я показываю первую часть пользователям и с помощью селекта выбираю данные, у меня этот компонент изменяет state для того что бы появились другие компоненты, но и из-за этого перерисовываются те которые были видны, тем самым селектор обновляется и не понятно что выбрал пользователь.
код.
CreateModalAddUser - главный компонент
<div className = "form-horizontal" id = "table" key = { this.props.role}>
<CreateInputFields callback = {this.callbackInputFields}/>
<CreateCompanyClient company = {companyClient} compenyId = {this.state.compenyId} callback = {this.callbackCompenyId}/>
<CreateSubOwner role = {this.props.role} callback = {this.callbackSubOwner}/>
{
divStyle.display
?
<div style={divStyle}>
<CreateAccrole = {this.props.role} callback = {this.callbackAcc} />
</div>
: null
}
</div>
Вот в CreateCompanyClient вся загвоздка
import React, {PureComponent} from 'react';
export default class CreateCompanyClient extends PureComponent {
componentDidMount() {
this.selector();
}
selector(){
var company = this.props.company;
var data = [];
var self = this;
if(company) {
_.each(company, function (company, index) {
data[index] = {
'id': company.id,
'text': company.name
}
});
$("#selectCompany").select2({
data: data
}).change(function (event) {
self.props.callback($(this).val());
});
}
}
render() {
return (
<div className="form-group">
<div className="col-md-5">
<label>Выберете компанию</label>
</div>
<div className="col-md-6">
<select className="js-data-example-ajax" id = "selectCompany">
<option value="-1">Выберете компанию</option>
</select>
</div>
</div>
)
}
}
При выборе из селекта CreateCompanyClient данные, он возвращает колбэком данные в родителя CreateModalAddUser и там обновляется state.action при котором divStyle.display срабатывает в тру и все показывает, но и обновляет CreateCompanyClient. И из-за этого не понятно что в селекторе выбрал пользователь. Селектор используется select2.
Пробовал записывать в CreateModalAddUser данные селектора и передавать их props-ом в CreateCompanyClient и его записывать в value, но так не получилось.Поэтому решил использовать PureComponent, но он отрабатывает как и обычный Component.
Что я делаю не так?