class MyForm extends Component {
render() {
const { handleSubmit, fields: { workers }, workersList } = this.props
const selectedWorkersIds = workers.map(workerField => workerField.value.id)
const finalWorkersList = workersList.filter(
worker => selectedWorkersIds.indexOf(worker.id) === -1
)
return (
<form onSubmit={handleSubmit}>
<WorkersMultiInput
field={workers}
workersList={finalWorkersList}
/>
</form>
)
}
}
class WorkersMultiInput extends Component {
render() {
const { field, workersList } = this.props
return (
<div>
{
field.map((workerField, i) => {
// Просто добавим в список выбранного воркера
const finalWorkerList = [ workerField.value, ...workersList ]
return (
<WorkerInput key={i} field={workerField} workersList={finalWorkersList} />
)
}
}
</div>
)
}
}
class ... {
consoleLog = () => {
//Второй вариант объявления
console.log('Второй вариант');
}
render() {
return (
<button onClick={this.consoleLog} type="button"> click me </button>
)
}
}
function createSomeRoute() {
const parentPromise = false;
const Route = {
path: '/',
component: require('blabla')
onEnter: function(state, replace, callback){
parentPromise = API
.getInfo()
.then(function(response){
callback();
return response
})
},
getChildRoutes(location, callback) {
// сюда заходит раньше чем в onEnter для отца если путь подразумевает что надо искать ребенка '/child'
// но мне это не подходит, потому что мои роуты должны строится исходя из данных которые получит отец,
//как это решить?
parentPromise.then((someData) => {
require.ensure([], function (require) {
callback(null, [
{
path: '/child'
}
])
} )
})
}
}
<CSSTransitionGroup transitionName="ProductCategoriesMenu--submenu-transition" transitionEnter={false}>
{category.products.length && isCategorySelected ? this.renderSubMenu(category) : null}
</CSSTransitionGroup>
.ProductCategoriesMenu--submenu-transition-leave {
max-height: 1000px;
overflow: hidden;
}
.ProductCategoriesMenu--submenu-transition-leave-active {
max-height: 0;
transition: max-height 1s cubic-bezier(0.22, 0.61, 0.36, 1);
}
<Input ... onChange={this.change}>
change = () => {
console.log("WTF");
this.setState({ open: !this.state.open })
};
constructor(...args) {
super(...args);
this.state = {
open: false,
value: 'select'
};
this.change = this.change.bind(this)
}
handleSubmit(data=this.getFormData()) {
<div className="filter-popup" onClick={this.props.onClick}>
....
closeModal() {
this.setState({
modalIsOpen: false
});
this.forceUpdate()
},
<li className="filter-result-item" onClick={this.showPopup}>
...
showPopup() { ... }
closeModal(e) {
e.stopPropagation();
this.setState({
modalIsOpen: false
});
},
checkedChange(name, val) {
this.setState({ [name]: val });
}
class FilterItems extends React.Component {
render() {
return (
<div>
<input onChange={(e) => this.props.handleChange('show_title1', e.target.checked)}
type="checkbox"
checked={this.props.show_title1}/>Столбец 1
<input onChange={(e) => this.props.handleChange('show_title2', e.target.checked)}
type="checkbox"
ref="show_title2"
checked={this.props.show_title2}/>Столбец 2
</div>
);
}