Привет. Помогите плиз разобраться с состояниями. Нужно реализовать приложение с динамичным добавлением\удалением элементов. С REST получаем JSON, парсим в объект, на базе объекта строится селектор, при выборе добавляется элемент, описанный в объекте. Проблема: не получается реализовать удаление текущего элемента - всегда удаляется последний. Упростил пример:
class Base extends React.Component {
constructor(props) {
super(props);
this.state = {
elements: [{
id: 0,
name: "Name"
}]
};
this.add = this.add.bind(this);
this.remove = this.remove.bind(this);
}
add() {
let newState = this.state.elements;
console.log(newState[newState.length - 1]);
newState.push({
id: newState[newState.length - 1].id + 1,
name: "Add manual"
});
this.setState({
elements: newState
})
}
remove(item) {
let newState = this.state.elements;
if (this.state.elements.indexOf(item)) {
newState.splice(this.state.elements.indexOf(item), 1);
this.setState({
elements: newState
});
}
}
render() {
const elements = this.state.elements.map(
(item, i) => < div key = {
i
} > < Select data = {
item.id + " - " + item.name
}
/><button onClick={this.remove.bind(this, item)}>Remove</button > < /div>
)
return ( < div className = "Container" >
<
div className = "Row" >
<
div > Это содержимое Base <button
onClick = {
this.add
} > Add item < /button> < /
div > < div > {
elements
} < /div> </div > <
/div>
)
}
}
class Select extends React.Component {
constructor(props) {
super(props);
this.data = props.data;
}
render() {
return ( <button>
Это оригинал: {
this.data
} </button>
)
}
}
ReactDOM.render(
<Base />,
document.getElementById('root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как сделать, чтобы div был по высоте контента? float не используетсяmain находится посреди страницы (margin: auto)
Моя проблема заключается в том, что при попытке настройки маршрутизации стандартного проекта ASPNET MVC и AngularJS, а именно "Вход/Регистрация", при...
Сейчас добавляется active, если находишься в категории siteru/closed/,